【算法】滑动窗口题单——1.定长滑动窗口⭐

文章目录

  • 1456. 定长子串中元音的最大数目
  • 2269. 找到一个数字的 K 美丽值
  • 1984. 学生分数的最小差值(排序)
  • 643. 子数组最大平均数 I
  • 1343. 大小为 K 且平均值大于等于阈值的子数组数目
  • 2090. 半径为 k 的子数组平均值
  • 2379. 得到 K 个黑块的最少涂色次数
  • 1052. 爱生气的书店老板
  • 2841. 几乎唯一子数组的最大和
  • 2461. 长度为 K 子数组中的最大和
  • 1423. 可获得的最大点数(转换成找中间窗口最小)
  • 2134. 最少交换次数来组合所有的 1 II
  • 2653. 滑动子数组的美丽值⭐
    • 解法1——利用二分维护窗口中的排序(超时了)
    • 解法2——滑动窗口+暴力枚举 ⭐(牛逼的暴力枚举!🐂)
  • 567. 字符串的排列
  • 438. 找到字符串中所有字母异位词
  • 2156. 查找给定哈希值的子串⭐⭐⭐
  • 346. 数据流中的移动平均值(用队列维护窗口)
  • 1100. 长度为 K 的无重复字符子串

题单来源:https://leetcode.cn/problems/minimum-size-subarray-in-infinite-array/solutions/2464878/hua-dong-chuang-kou-on-shi-jian-o1-kong-cqawc/

1456. 定长子串中元音的最大数目

https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/description/

在这里插入图片描述

提示:

1 <= s.length <= 10^5
s 由小写英文字母组成
1 <= k <= s.length

定长滑动窗口,进来一个加一个,出去一个减一个。

class Solution {
    public int maxVowels(String s, int k) {
        int n = s.length(), cnt = 0, ans = 0;
        Set<Character> vowel = Set.of('a', 'e', 'i', 'o', 'u');
        for (int l = 0, r = 0; r < n; ++r) {
            if (vowel.contains(s.charAt(r))) cnt++;
            if (r >= l + k) {
                if (vowel.contains(s.charAt(l))) cnt--;
                l++;
            }
            ans = Math.max(ans, cnt);
        }
        return ans;
    }
}

2269. 找到一个数字的 K 美丽值

https://leetcode.cn/problems/find-the-k-beauty-of-a-number/

在这里插入图片描述
提示:
1 <= num <= 10^9
1 <= k <= num.length (将 num 视为字符串)

以240为例,
起初 x=100,y=1. 取出 240 % 100 / 1 = 40;
之后 x=1000,y=10 取出 240 % 1000 / 10 = 24;

class Solution {
    public int divisorSubstrings(int num, int k) {
        int ans = 0;
        long x = 1, y = 1;
        for (int i = 0; i < k; ++i) x *= 10;
        for (; x / 10 <= num; x *= 10, y *= 10) {
            long z = (long)num % x / y;
            if (z != 0 && num % z == 0) ++ans;
        }
        return ans;
    }
}

1984. 学生分数的最小差值(排序)

https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/description/

在这里插入图片描述

排序之后的区间两边一定是一个最大值和一个最小值。
逐个枚举即可。

class Solution {
    public int minimumDifference(int[] nums, int k) {
        Arrays.sort(nums);
        int n = nums.length, ans = nums[n - 1] - nums[0];
        for (int l = 0, r = k - 1; r < n; ++l, ++r) {
            ans = Math.min(ans, nums[r] - nums[l]);
        }
        return ans;
    }
}

643. 子数组最大平均数 I

https://leetcode.cn/problems/maximum-average-subarray-i/description/
在这里插入图片描述

注意可能会溢出的问题。

class Solution {
    public double findMaxAverage(int[] nums, int k) {
        double ans = -10001, s = 0;
        for (int l = 0, r = 0; r < nums.length; ++r) {
            s += nums[r];
            if (r - l + 1 == k) {
                ans = Math.max(ans, s / k);
                s -= nums[l++];
            }
        }
        return ans;
    }
}

1343. 大小为 K 且平均值大于等于阈值的子数组数目

https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/description/

在这里插入图片描述
提示:
1 <= arr.length <= 10^5
1 <= arr[i] <= 10^4
1 <= k <= arr.length
0 <= threshold <= 10^4

class Solution {
    public int numOfSubarrays(int[] arr, int k, int threshold) {
        int ans = 0;
        long t = threshold * k, s = 0;
        for (int i = 0; i < k - 1; ++i) s += arr[i];
        for (int i = k - 1; i < arr.length; ++i) {
            s += arr[i];
            if (s >= t) ans++;
            s -= arr[i - k + 1];
        }
        return ans;
    }
}

2090. 半径为 k 的子数组平均值

https://leetcode.cn/problems/k-radius-subarray-averages/description/

在这里插入图片描述
提示:

n == nums.length
1 <= n <= 10^5
0 <= nums[i], k <= 10^5

用 s 维护长度为 2*k+1 窗口内所有值的总和。

class Solution {
    public int[] getAverages(int[] nums, int k) {
        int n = nums.length;
        int[] ans = new int[n];
        Arrays.fill(ans, -1);
        long s = 0, l = 2 * k + 1;
        for (int i = 0; i < 2 * k && i < n; ++i) s += nums[i];
        for (int i = 2 * k; i < n; ++i) {
            s += nums[i];
            ans[i - k] = (int)(s / l);
            s -= nums[i - 2 * k];
        }
        return ans;
    }
}

2379. 得到 K 个黑块的最少涂色次数

https://leetcode.cn/problems/minimum-recolors-to-get-k-consecutive-black-blocks/description/

在这里插入图片描述

提示:
n == blocks.length
1 <= n <= 100
blocks[i] 要么是 'W' ,要么是 'B' 。
1 <= k <= n

固定长度滑动窗口。

class Solution {
    public int minimumRecolors(String blocks, int k) {
        int ans = k, n = blocks.length(), s = 0;
        for (int i = 0; i < k - 1; ++i) {
            if (blocks.charAt(i) == 'W') s++;
        }
        for (int i = k - 1; i < n; ++i) {
            if (blocks.charAt(i) == 'W') s++;
            ans = Math.min(ans, s);
            if (blocks.charAt(i - k + 1) == 'W') s--;
        }
        return ans;
    }
}

1052. 爱生气的书店老板

https://leetcode.cn/problems/grumpy-bookstore-owner/description/

在这里插入图片描述

提示:

n == customers.length == grumpy.length
1 <= minutes <= n <= 2 * 10^4
0 <= customers[i] <= 1000
grumpy[i] == 0 or 1

变量 s 维护长度为minutes的窗口中 生气时的顾客数量,这些顾客可以通过秘密技巧变得满意。
变量 total 计算本来就满意的顾客数量。

最后的答案是本来就满意的顾客数量+使用技巧变得满意的最多顾客数量。

class Solution {
    public int maxSatisfied(int[] customers, int[] grumpy, int minutes) {
        int n = customers.length, s = 0, mx = 0, total = 0;
        for (int i = 0; i < minutes - 1; ++i) {
            if (grumpy[i] == 1) s += customers[i];
            else total += customers[i];
        }
        for (int i = minutes - 1; i < n; ++i) {
            if (grumpy[i] == 1) s += customers[i];
            else total += customers[i];
            mx = Math.max(mx, s);
            if (grumpy[i - minutes + 1] == 1) s -= customers[i - minutes + 1];
        }
        return total + mx;
    }
}

2841. 几乎唯一子数组的最大和

https://leetcode.cn/problems/maximum-sum-of-almost-unique-subarray/submissions/

在这里插入图片描述

提示:
1 <= nums.length <= 2 * 10^4
1 <= m <= k <= nums.length
1 <= nums[i] <= 10^9

用 s 维护和。
用 cnt 维护不同数字的种类数量。

class Solution {
    public long maxSum(List<Integer> nums, int m, int k) {
        long ans = 0, s = 0;
        Map<Integer, Integer> cnt = new HashMap<>();
        for (int i = 0; i < k - 1; ++i) {
            s += nums.get(i);
            cnt.merge(nums.get(i), 1, Integer::sum);
        }
        for (int i = k - 1; i < nums.size(); ++i) {
            s += nums.get(i);
            cnt.merge(nums.get(i), 1, Integer::sum);
            if (cnt.size() >= m) ans = Math.max(ans, s);
            s -= nums.get(i - k + 1);
            cnt.merge(nums.get(i - k + 1), -1, Integer::sum);
            if (cnt.get(nums.get(i - k + 1)) == 0) cnt.remove(nums.get(i - k + 1));
        }
        return ans;
    }
}

2461. 长度为 K 子数组中的最大和

https://leetcode.cn/problems/maximum-sum-of-distinct-subarrays-with-length-k/description/
在这里插入图片描述
提示:
1 <= k <= nums.length <= 10^5
1 <= nums[i] <= 10^5

class Solution {
    public long maximumSubarraySum(int[] nums, int k) {
        long ans = 0, s = 0;
        Map<Integer, Integer> cnt = new HashMap<>();
        for (int i = 0; i < nums.length; ++i) {
            s += nums[i];
            cnt.merge(nums[i], 1, Integer::sum);
            if (cnt.size() == k) ans = Math.max(ans, s);
            if (i >= k - 1) {
                int x = nums[i - k + 1];
                s -= x;
                cnt.merge(x, -1, Integer::sum);
                if (cnt.get(x) == 0) cnt.remove(x);
            }
        }
        return ans;
    }
}

1423. 可获得的最大点数(转换成找中间窗口最小)

https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/description/
在这里插入图片描述

提示:
1 <= cardPoints.length <= 10^5
1 <= cardPoints[i] <= 10^4
1 <= k <= cardPoints.length

从两边拿要取最大,也就是找中间连续的最小
可以使用固定长度滑动窗口。

class Solution {
    public int maxScore(int[] cardPoints, int k) {
        int n = cardPoints.length, l = n - k, total = 0, s = 0, mn = Integer.MAX_VALUE;
        if (l == 0) return Arrays.stream(cardPoints).sum();
        for (int i = 0; i < n; ++i) {
            s += cardPoints[i];
            total += cardPoints[i];
            if (i >= l - 1) {
                mn = Math.min(mn, s);
                s -= cardPoints[i - l + 1];
            }
        }
        return total - mn;
    }
}

2134. 最少交换次数来组合所有的 1 II

https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together-ii/description/

在这里插入图片描述

提示:
1 <= nums.length <= 10^5
nums[i] 为 0 或者 1

最后所以的 1 一定会相邻。
所以转换成求固定长度窗口中 1 出现的最大值,其它不在窗口中的 1 都需要交换过来。

class Solution {
    public int minSwaps(int[] nums) {
        int k = Arrays.stream(nums).sum(), mx = 0, s = 0, n = nums.length;
        for (int x = 0; x < 2 * n; ++x) {
            int i = x % n;
            s += nums[i];
            if (x >= k - 1) {
                mx = Math.max(mx, s);
                s -= nums[(x - k + 1) % n];
            }
        }
        return k - mx;
    }
}

2653. 滑动子数组的美丽值⭐

https://leetcode.cn/problems/sliding-subarray-beauty/description/

在这里插入图片描述

提示:

n == nums.length
1 <= n <= 10^5
1 <= k <= n
1 <= x <= k
-50 <= nums[i] <= 50

解法1——利用二分维护窗口中的排序(超时了)

class Solution {
    public int[] getSubarrayBeauty(int[] nums, int k, int x) {
        int n = nums.length;
        List<Integer> ls = new ArrayList<>();
        int[] ans = new int[n - k + 1];
        for (int i = 0; i < n; ++i) {
            int t = nums[i];
            int id = bs(ls, t);
            ls.add(id, t);
            if (ls.size() > k) {
                id = bs(ls, nums[i - k]);
                ls.remove(id);
            }
            if (ls.size() == k) {
                if (ls.get(x - 1) < 0) ans[i - k + 1] = ls.get(x - 1);
                else ans[i - k + 1] = 0;
            }
        }
        return ans;
    }

    public int bs(List<Integer> ls, int t) {
        int l = 0, r = ls.size();
        while (l < r) {
            int mid = l + r >> 1;
            if (ls.get(mid) < t) l = mid + 1;
            else r = mid;
        }
        return l;
    }
}

在这里插入图片描述

把 ArrayList 换成 LinkedList 超时会更多。

解法2——滑动窗口+暴力枚举 ⭐(牛逼的暴力枚举!🐂)

https://leetcode.cn/problems/sliding-subarray-beauty/solutions/2241294/hua-dong-chuang-kou-bao-li-mei-ju-by-end-9mvl/
在这里插入图片描述
虽然是暴力枚举,但是充分利用了数值的值域很小的特性。

class Solution {
    public int[] getSubarrayBeauty(int[] nums, int k, int x) {
        final int BIAS = 50;
        int[] cnt = new int[BIAS * 2 + 1];  // 计数数组
        int n = nums.length;
        int[] ans = new int[n - k + 1];
        for (int i = 0; i < n; ++i) {
            cnt[nums[i] + BIAS]++;          // 进入窗口
            if (i >= k - 1) {               // 计算该位置的答案
                int left = x;               // 计算剩余的x
                for (int j = 0; j < BIAS; ++j) {
                    left -= cnt[j];
                    if (left <= 0) {        // 找到了答案
                        ans[i - k + 1] = j - BIAS;
                        break;
                    }
                }
                --cnt[nums[i - k + 1] + BIAS];  // 移出窗口
            }
        }
        return ans;
    }
}

567. 字符串的排列

https://leetcode.cn/problems/permutation-in-string/description/

在这里插入图片描述

提示:

1 <= s1.length, s2.length <= 10^4
s1 和 s2 仅包含小写字母

如果 s1 的排列之一是 s2 的 子串。那么应该满足 s2 的一个字串中,各个字符的数量和 s1 相同。

用计数数组维护窗口中各个字符的数量即可。

class Solution {
    public boolean checkInclusion(String s1, String s2) {
        int[] cnt = new int[128];
        for (char ch: s1.toCharArray()) cnt[ch]++;
        for (int l = 0, r = 0; r < s2.length(); ++r) {
            cnt[s2.charAt(r)]--;
            if (r - l >= s1.length()) cnt[s2.charAt(l++)]++; 
            boolean f = true;
            for (char ch = 'a'; ch <= 'z'; ++ch) {
                if (cnt[ch] != 0) {
                    f = false;
                    break;
                }
            }
            if (f) return true;
        }
        return false;
    }
}

438. 找到字符串中所有字母异位词

https://leetcode.cn/problems/find-all-anagrams-in-a-string/description/

在这里插入图片描述

提示:

1 <= s.length, p.length <= 3 * 10^4
s 和 p 仅包含小写字母

维护 s 中长度等于 p 的滑动窗口,检查 窗口中的各个字符数量和 p 中的字符数量是否相等即可。

class Solution {
    public List<Integer> findAnagrams(String s, String p) {
        List<Integer> ans = new ArrayList<>();
        int[] cnt = new int[128];
        for (char ch: p.toCharArray()) cnt[ch]++;
        for (int l = 0, r = 0; r < s.length(); ++r) {
            cnt[s.charAt(r)]--;
            if (r - l >= p.length()) cnt[s.charAt(l++)]++;
            boolean f = true;
            for (char ch = 'a'; ch <= 'z'; ++ch) {
                if (cnt[ch] != 0) {
                    f = false;
                    break;
                }
            }
            if (f) ans.add(l);
        } 
        return ans;
    }
}

2156. 查找给定哈希值的子串⭐⭐⭐

https://leetcode.cn/problems/find-substring-with-given-hash-value/description/

在这里插入图片描述

提示:
1 <= k <= s.length <= 2 * 10^4
1 <= power, modulo <= 10^9
0 <= hashValue < modulo
s 只包含小写英文字母。
测试数据保证一定 存在 满足条件的子串。

解法1——倒序滚动哈希

https://leetcode.cn/problems/find-substring-with-given-hash-value/solutions/1249153/cha-zhao-gei-ding-ha-xi-zhi-de-zi-chuan-fi8jd/
倒序处理,
先处理出 p o w e r ( k − 1 ) m o d    m o d u l o power^(k-1) \mod modulo power(k1)modmodulo

class Solution {
    public String subStrHash(String s, int power, int modulo, int k, int hashValue) {
        int n = s.length(), pos = -1;
        // h:子串哈希值   mult:power^(k-1) mod modulo
        long h = 0, mult = 1;
        // 预处理最后一个子串的哈希值和 power^k mod modulo
        for (int i = n - 1; i >= n - k; --i) {
            h = (h * power + (s.charAt(i) - 'a' + 1)) % modulo;
            if (i != n - k) {
                mult = mult * power % modulo;
            }
        }
        if (h == hashValue) pos = n - k;
        // 向前计算哈希值并尝试更新下标
        for (int i = n - k - 1; i >= 0; --i) {
            h = ((h - (s.charAt(i + k) - 'a' + 1) * mult % modulo + modulo) * power + (s.charAt(i) - 'a' + 1)) % modulo;
            if (h == hashValue) {
                pos = i;
            }
        }
        return s.substring(pos, pos + k);
    }
}

解法2——倒序滑动窗口 + O ( 1 ) O(1) O(1) 额外空间

class Solution {
    public String subStrHash(String s, int power, int modulo, int k, int hashValue) {
        int n = s.length(), pos = -1;
        // h:子串哈希值   mult:power^(k-1) mod modulo
        long h = 0, mult = 1;
        // 预处理最后一个子串的哈希值和 power^k mod modulo
        for (int i = n - 1; i >= n - k; --i) {
            h = (h * power + (s.charAt(i) & 31)) % modulo;
            if (i != n - k) {
                mult = mult * power % modulo;
            }
        }
        if (h == hashValue) pos = n - k;
        // 向前计算哈希值并尝试更新下标
        for (int i = n - k - 1; i >= 0; --i) {
            h = ((h - (s.charAt(i + k) & 31) * mult % modulo + modulo) * power + (s.charAt(i) & 31)) % modulo;
            if (h == hashValue) {
                pos = i;
            }
        }
        return s.substring(pos, pos + k);
    }
}

小技巧,将’a’——'z’转成1——26 🐂

只需要 & 31 即可。
在这里插入图片描述

346. 数据流中的移动平均值(用队列维护窗口)

https://leetcode.cn/problems/moving-average-from-data-stream/description/

在这里插入图片描述
提示:
1 <= size <= 1000
-10^5 <= val <= 10^5
最多调用 next 方法 10^4 次

class MovingAverage {
    Queue<Integer> q = new LinkedList<>();
    int sz;
    double sum;

    public MovingAverage(int size) {
        sz = size;
        sum = 0;
    }
    
    public double next(int val) {
        q.offer(val);
        sum += val;
        if (q.size() > sz) sum -= q.poll();
        return sum / q.size();
    }
}

/**
 * Your MovingAverage object will be instantiated and called as such:
 * MovingAverage obj = new MovingAverage(size);
 * double param_1 = obj.next(val);
 */

1100. 长度为 K 的无重复字符子串

https://leetcode.cn/problems/find-k-length-substrings-with-no-repeated-characters/description/

在这里插入图片描述
提示:
1 <= S.length <= 10^4
S 中的所有字符均为小写英文字母
1 <= K <= 10^4

维护长度为 k 的滑动窗口中各个字符出现的数量。

class Solution {
    public int numKLenSubstrNoRepeats(String s, int k) {
        int[] cnt = new int[128];
        int ans = 0;
        for (int l = 0, r = 0; r < s.length(); ++r) {
            cnt[s.charAt(r)]++;
            if (r - l >= k) cnt[s.charAt(l++)]--;
            if (r >= k - 1 && check(cnt)) ans++;
        }
        return ans;
    }

    public boolean check(int[] cnt) {
        for (char ch = 'a'; ch <= 'z'; ++ch) {
            if (cnt[ch] > 1) {
                return false;
            }
        }
        return true;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/199936.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Gson的用法详解

一、简介 Gson&#xff08;又称Google Gson&#xff09;是Google公司发布的一个开放源代码的Java库&#xff0c;主要用途为序列化Java对象为JSON字符串&#xff0c;或反序列化JSON字符串成Java对象。 Gson官网&#xff1a;gson Gson源码地址&#xff1a;google/gson 二、依赖…

【Vue】Linux 运行 npm run serve 报错 vue-cli-service: Permission denied

问题描述 在Linux系统上运行npm run serve命令时&#xff0c;控制台报错&#xff1a; sudo npm run serve project50.1.0 serve vue-cli-service serve sh: 1: vue-cli-service: Permission denied错误截图如下&#xff1a; 原因分析 该错误是由于vue-cli-service文件权限不…

你知道显卡型号上的数字是什么意思吗?数字越大就越好吗?

大家好&#xff0c;欢迎来到我们的显卡探秘之旅&#xff01;今天&#xff0c;我们将一探究竟——显卡型号上的数字到底是啥意思&#xff1f;是不是数字越大&#xff0c;显卡就越NB&#xff1f;别急&#xff0c;跟着小编一起揭开这个神秘的数字面纱&#xff01; Q1 显卡的基本概…

数字人透明屏幕是如何工作的?

数字人透明屏幕是一种令人兴奋的科技产品&#xff0c;它结合了人脸识别、全息影像技术以及透明屏幕&#xff0c;为人们带来了全新的互动体验。本文将详细介绍数字人透明屏幕的工作原理以及其应用场景。 工作原理 数字人透明屏幕的工作原理主要包括人脸识别和全息影像技术。人脸…

灰度发布专题---4、APP灰度发布

APP如何灰度发布 我们前面讲解了配置文件灰度发布、IP切流、静态页灰度发布&#xff0c;但如果是APP该如何灰度发布呢&#xff1f;APP的灰度发布比较简单&#xff0c;也比较传统&#xff0c;不像我们其他程序能完全自动化操作。 APP灰度发布流程 上面这张图是灰度发布流程图&…

自研基于Xilinx PCIe的高性能多路视频采集与显示控制器

1 概述 视频采集与显示子系统可以实时采集多路视频信号&#xff0c;并存储到视频采集队列中&#xff0c;借助高效的硬实时视频帧出入队列管理和PCIe C2H DMA引擎&#xff0c;将采集到的视频帧实时传递到上位机采集缓冲区。在超带宽视频采集情况下&#xff0c;支持采集丢帧操作…

index函数

字符串的index函数可以查找字符串里(某范围内)某子串出现的位置(从左)。字符串的index函数的语法格式&#xff1a; S.index(sub [,start [,end]]) -> int 函数的返回值为整形&#xff0c;即位置。sub为要查找的子串&#xff0c;start参数的含义是从S字符串的第start位置开始…

C++ day42背包理论基础01 + 滚动数组

背包问题的重中之重是01背包 01背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 每一件物品其实只有两个状态&#xff0c;取或者不…

[DASCTF 2023 0X401七月暑期挑战赛] web刷题记录

文章目录 EzFlask方法一 python原型链污染方法二 flask框架静态文件方法三 pin码计算 MyPicDisk方法一 字符串拼接执行命令方法二 phar反序列化 ez_cms EzFlask 考点&#xff1a;python原型链污染、flask框架理解、pin码计算 源码如下 import uuidfrom flask import Flask, re…

python与机器学习1,机器学习的一些基础知识概述(完善ing)

目录 1 AI ,ML,DL,NN 等等概念分类 1.1 人工智能、机器学习、深度学习、神经网络之间的关系&#xff1a; 1.2 人工智能的发展 2 ML机器学习的分类&#xff1a;SL, USL,RL 2.1 机器学习的分类 2.2 具体的应用举例 2.3 数据分类 3 关于阈值θ和偏移量b的由来 4 不同的激…

VMware虚机重启后静态IP不生效

配置好一套虚机之后&#xff0c;因为重启电脑&#xff0c;导致虚机的静态ip配置不生效&#xff0c;xshell连接不上虚机。以下是自查和解决方案&#xff1a; 1.使用su -进入root用户 2.查看打开虚机的teminal窗口查看配置的ip文件&#xff1a;vim /etc/sysconfig/network-script…

使用Accelerate库在多GPU上进行LLM推理

大型语言模型(llm)已经彻底改变了自然语言处理领域。随着这些模型在规模和复杂性上的增长&#xff0c;推理的计算需求也显著增加。为了应对这一挑战利用多个gpu变得至关重要。 所以本文将在多个gpu上并行执行推理&#xff0c;主要包括&#xff1a;Accelerate库介绍&#xff0c;…

【APUE】进程间通信

目录 一、管道 1.1 匿名管道 1.2 命名管道 二、XSI IPC 2.1 概述 2.2 消息队列 2.2.1 msgget 2.2.2 msgsnd 2.2.3 msgrcv 2.2.4 msgctl 2.2.5 代码示例 2.3 信号量数组 2.3.1 semget 2.3.2 semop 2.3.3 semctl 2.3.4 代码示例 2.3 共享内存 2.3.1 shmget…

PVE中CT容器安装openwrt X86的极简方法

下载推荐&#xff1a;https://openwrt.ai/ 使用环境PVE8.0&#xff0c;openwrt是以上网址的最新版&#xff0c;内涵及其丰富组件。 问题来源&#xff1a; 在PVE虚拟机可以很方便的使用img文件&#xff0c;转换qm 成一个硬盘文件&#xff0c;加入到虚拟机也就完成了&#xff0c…

《git小白笔记·一》记住这些Git使用就够了

到底选gitlab还是选github&#xff1f;&#xff1a; 只要掌握这些git命令完全够用&#xff1a; &#xff08;1&#xff09;首先我们先下载一个git&#xff0c;下载完成后属于右键会看到git GUI here和git Bash here&#xff0c;我们常用git Bash here&#xff0c;打开Git我们看…

台灯哪种灯光对眼睛好?精选高品质的护眼台灯

近几年越来越多家长开始重视孩子的视力健康问题&#xff0c;要知道如今我国儿童青少年的近视率已经达到了52.7%&#xff0c;也就是说平均每十个儿童青少年中就有五个是存在视力问题的&#xff0c;而且近视的人群是越往高年级的学生占比越多。不过目前也发现了不少低年级的孩子出…

嵌入式总线技术详解

1. 总线概述 1.1 总线定义 总线&#xff08;Bus&#xff09;是计算机各种功能部件之间传送信息的公共通信干线它是由导线组成的传输线束&#xff0c;按照计算机所传输的信息种类&#xff0c;计算机的总线可以划分为数据总线、地址总线和控制总线&#xff0c;分别用来传输数据…

Python开发——工具篇 Pycharm的相关配置,Python相关操作 持续更新

前言 本篇博客是python开发的工具篇相关&#xff0c;介绍pycharm的使用和相关配置&#xff0c;收录python的相关操作&#xff0c;比如如何启动jupyter。 目录 前言引出Pycharmpycharm如何不同等级日志显示不同颜色设置不同pycharm的python环境 Python操作如何启动Jupyter 总结…

电脑资料删除后如何恢复?3个简单方法轻松恢复文件!

“我平常喜欢在电脑上保存很多学习资料&#xff0c;但由于资料太多&#xff0c;在清理电脑时我可能会误删一些比较有用的资料。想问问大家电脑资料删除后还有机会恢复吗&#xff1f;应该怎么操作呢&#xff1f;” 在数字化时代&#xff0c;很多用户都会选择将重要的文件直接保存…

如何在安卓Termux中使用SFTP文件传输并结合内网穿透工具实现远程传输

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFTP使用了…
最新文章