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

news2024/12/24 1:02:21

文章目录

  • 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.coloradmin.cn/o/1265846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【问题系列】消费者与MQ连接断开问题解决方案(一)

1. 问题描述 当使用RabbitMQ作为中间件&#xff0c;而消费者为服务时&#xff0c;可能会出现以下情况&#xff1a;在长时间没有消息传递后&#xff0c;消费者与RabbitMQ之间出现连接断开&#xff0c;导致无法处理新消息。解决这一问题的方法是重启Python消费者服务&#xff0c;…

okhttp系列-拦截器的执行顺序

1.将拦截器添加到ArrayList final class RealCall implements Call {Response getResponseWithInterceptorChain() throws IOException {//将Interceptor添加到ArrayListList<Interceptor> interceptors new ArrayList<>();interceptors.addAll(client.intercept…

Android控件全解手册 - 任意View缩放平移工具-源码

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

数学建模-基于BL回归模型和决策树模型对早产危险因素的探究和预测

整体求解过程概述(摘要) 近年来&#xff0c;全球早产率总体呈上升趋势&#xff0c;在我国&#xff0c;早产儿以每年 20 万的数目逐年递增&#xff0c;目前早产已经成为重大的公共卫生问题之一。据研究,早产是威胁胎儿及新生儿健康的重要因素&#xff0c;可能会造成死亡或智力体…

每日一题:LeetCode-202.面试题 08.06. 汉诺塔问题

每日一题系列&#xff08;day 07&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

20世纪30年代的大危机

背景 1929年9月&#xff0c;美国财政部部长安德鲁梅隆向公众保证“现在没有担心的理由&#xff0c;这一繁荣的高潮将会继续下去”。 当时流行的一首儿歌&#xff1a;“梅隆拉响汽笛&#xff0c;胡佛敲起钟&#xff0c;华尔街发出信号&#xff0c;美国往地狱里冲&#xff01;”…

水库大坝安全在线监测系统守护水利工程的坚实屏障

随着科技的发展&#xff0c;水库大坝的安全监测已经进入了一个全新的时代。过去&#xff0c;我们无法实时监测大坝的安全状况&#xff0c;只能在灾难发生后进行补救&#xff0c;现在&#xff0c;通过WX-DB1水库大坝安全在线监测系统&#xff0c;我们能够在第一时间掌握大坝的运…

【创建和排查隐藏进程和隐藏计划任务】

Window 创建隐藏进程和隐藏计划任务&#xff1a; 隐藏进程&#xff1a; 在Windows中&#xff0c;隐藏进程主要通过修改进程属性或使用第三方工具实现。以下是一个使用PowerShell脚本创建隐藏进程的示例&#xff1a; $Script {Start-Process -FilePath "notepad.exe"…

Kubernetes Pod 介绍

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容Pod 介绍与原理讲解Pod 生命周期管理Pod 的健康检查 &#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51…

Peter算法小课堂—高精度减法

给大家看个小视频高精度减法_哔哩哔哩_bilibili 基本思想 计算机模拟人类做竖式计算&#xff0c;从而得到正确答案 大家还记得小学时学的“减法竖式”吗&#xff1f;是不是这样 x-y问题 函数总览&#xff1a; 1.converts() 字符串转为高精度大数 2.le() 判断大小 3.sub() …

这个蓄电池监控神技,谁用谁知道!

随着电力需求的不断增长&#xff0c;蓄电池作为能量存储的关键组件在各个领域得到了广泛应用&#xff0c;为了确保蓄电池的可靠性和性能&#xff0c;监控系统变得至关重要。 蓄电池监控系统可以实时监测电池的状态、健康状况以及充放电过程&#xff0c;从而提高电池的寿命、降低…

比尔盖茨:GPT-5不会比GPT-4好多少,生成式AI已达到极限

比尔盖茨一句爆料&#xff0c;成为机器学习社区热议焦点&#xff1a; “GPT-5不会比GPT-4好多少。” 虽然他已不再正式参与微软的日常运营&#xff0c;但仍在担任顾问&#xff0c;并且熟悉OpenAI领导团队的想法。 消息来自德国《商报》&#xff08;Handelsblatt&#xff09;对…

麒麟操作系统光盘救援模式

麒麟操作系统光盘救援模式 Kylin V4 桌面版&#xff1a; 启动主机后&#xff0c;插入系统光盘&#xff0c;在 BIOS 启动项里设置成从光盘启动后保存退出重启主机。 稍等片刻就会到启动菜单选项&#xff0c;到启动菜单界面后选择第一项试用银河麒麟操作系统而不安 装&#xff…

酷开系统 | 追求娱乐不止一种方式,酷开科技带你开启新体验!

在当今社会&#xff0c;娱乐方式多种多样&#xff0c;人们对于娱乐的需求和追求也在日益增长。然而&#xff0c;传统的娱乐方式已经无法满足大家对于多元化、个性化的体验需求。此时&#xff0c;酷开科技以其独特的视角和领先的技术&#xff0c;为消费者们带来了全新的娱乐体验…

DockerCompose修改某个服务的配置(添加或编辑端口号映射)后如何重启单个服务使其生效

场景 docker-compose入门以及部署SpringBootVueRedisMysql(前后端分离项目)以若依前后端分离版为例&#xff1a; docker-compose入门以及部署SpringBootVueRedisMysql(前后端分离项目)以若依前后端分离版为例_docker-compose部署java mysql redis-CSDN博客 上面讲了docker c…

数据安全建设的六大关键步骤

随着数字化时代的到来&#xff0c;数据安全已经成为企业和社会组织必须面对的重要问题。数据泄露、网络攻击等安全事件频发&#xff0c;给个人隐私、企业利益和国家安全带来了严重威胁。因此&#xff0c;加强数据安全建设已成为刻不容缓的任务。以下是数据安全建设的六大关键步…

解决Maven项目jar包下载失败的问题

文章目录 配置国内的Maven源引入正确的settings.xml文件重新下载jar包对后面要创建的新项目也统一配置仍然失败的解决办法 配置国内的Maven源 引入正确的settings.xml文件 如果该目录下的 settings.xml文件不存在或者错误&#xff0c;要创建一个 settings.xml文件并写入正确的…

SVD recommendation systems

SVD recommendation systems 为什么在推荐系统中使用SVD 一个好的推荐系统一定有小的RMSE R M S E 1 m ∑ i 1 m ( Y i − f ( x i ) 2 RMSE \sqrt{\frac{1}{m} \sum_{i1}^m(Y_i-f(x_i)^2} RMSEm1​i1∑m​(Yi​−f(xi​)2 ​ 希望模型能够在已知的ratings上有好的结果的…

物理层之三种数据交换方式(电路交换、报文交换、分组交换(数据报方式、虚电路方式))

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

idea打开.class文件没有反编译

1 问题描述 新安装的idea开发工具&#xff0c;打开.class文件查看内容时发现没有将文件进行反编译&#xff0c;所以具体的代码实现看不到。如图所示&#xff1a; 尝试了各种办法解决&#xff0c;最终都没有解决我的问题&#xff0c;其他同事的idea开发工具都可以打开.class文件…