当前位置: 首页 > news >正文

优选算法合集————双指针(专题二)

好久都没给大家带来算法专题啦,今天给大家带来滑动窗口专题的训练

题目一:长度最小的子数组

题目描述:

给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。

示例 1:

输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。

示例 2:

输入:target = 4, nums = [1,4,4]
输出:1

示例 3:

输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0

题目解析:

我们要在给定的数组中找出最短的数的和大于等于target,我们通常可以怎么做呢:

1,暴力解法:

我们直接定义两个下标 left和right,让right向右遍历,遍历到最后3下标,记录大于等于target的最短长度,在让left++,从1下标开始让r从3下标一直走到头记录大于等于target的最短长度,这样的操作时间复杂度还是很大的为O(n方),我们要想一个全新的方法;

算法思路:

我们使用滑动窗口,还是定义两个指针left和right;

1,进窗口:让right的元素相加得到num;

2,判断条件;如果num的值>=target,更新结果,把当前的长度记录下来,此时right原地不动,出窗口:让左边的left下标的元素出去,直到num<=target;

滑动窗口这主要就是想,代码很固定的,进窗口,判断条件,(出窗口,更新结果,这俩的顺序因题而异);

代码实现:

class Solution {public int minSubArrayLen(int target, int[] nums) {int left = 0;int right = 0;int n = nums.length;int num = 0;int len = Integer.MAX_VALUE;for(;right<n;right++){num+=nums[right];while(num>=target){len = Math.min(len,right-left+1);num-=nums[left];left++;}}len = len==Integer.MAX_VALUE?0:len;return len;}
}

———————————————————————————————————————————

题目二:无重复字符的最长子串

题目描述:

给定一个字符串 s ,请你找出其中不含有重复字符的 最长连续子字符串 的长度。

示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子字符串是 "abc",所以其长度为 3。

示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子字符串是 "b",所以其长度为 1。

示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

示例 4:

输入: s = ""
输出: 0

题目解析:

和刚才的题差不多,我们得到一个数组我们要统计连续不重复字符的最大长度,我们依旧是可以进行暴力解法,定义两个指针,一次一次遍历找到最长且满足条件的字符串,但是太慢了,我们还是要使用方法;

算法思路:

准备:定义一个数组模拟哈希,为啥不直接用HashMap或者HashSet呢,不断的调用这些方法也很慢,我们直接用数组的话会快很多很多,把字符串s转换成字符数组,个人习惯;

1,进窗口:Hash对应的字符下标+1;

2,更新结果:在判断条件之前就要更新结果,进窗口一次就记录一次结果;

3,判断条件:当进入的right的Hash大于1,就要一直出窗口,直到窗口中没有1重复元素了为止;

代码实现:

class Solution {public int lengthOfLongestSubstring(String s) {int[] hash1 = new int[10000];char[] arr = s.toCharArray();int left = 0;int right = 0;int len = 0;int n = arr.length;for(;right<n;right++){hash1[arr[right]]++;while(hash1[arr[right]]>1){hash1[arr[left]]--;left++;}len = Math.max(len,right-left+1);}return len;}
}

———————————————————————————————————————————

题目三:最大连续1的个数

题目描述:

给定一个二进制数组 nums 和一个整数 k,假设最多可以翻转 k 个 0 ,则返回执行操作后 数组中连续 1 的最大个数 。

示例 1:

输入:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2
输出:6
解释:[1,1,1,0,0,1,1,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 6。

示例 2:

输入:nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3
输出:10
解释:[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 10。

题目解析:

还是一样给了一个数组,和一个整数k,我们要找到连续1最大的长度,并且0有k次机会可以翻转为1,我们就可以把k当做一个窗口,小于k进窗口,超过k出窗口;

算法思路:

1,定义count与k比较当作窗口

2,进窗口:如果nums[right]的值为0,count++,为1count不变,

3,判断条件:当count>k,开始循环出窗口直到count<=k,

4,更新结果:在判断条件外中更新结果;

代码实现:

class Solution {public int longestOnes(int[] nums, int k) {int left=0, right=0;int n = nums.length;int count = 0;int len = 0;for(;right<n;++right){if(nums[right]==0){++count;}while(count>k){if(nums[left]==0){--count;}++left;}len = Math.max(len,right-left+1);}return len;}
}

———————————————————————————————————————————

题目四:将x减到0的最小操作数

题目描述:

给你一个整数数组 nums 和一个整数 x 。每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值。请注意,需要 修改 数组以供接下来的操作使用。

如果可以将 x 恰好 减到 0 ,返回 最小操作数 ;否则,返回 -1 。

示例 1:

输入:nums = [1,1,4,2,3], x = 5
输出:2
解释:最佳解决方案是移除后两个元素,将 x 减到 0 。

示例 2:

输入:nums = [5,6,7,8,9], x = 4
输出:-1

示例 3:

输入:nums = [3,2,20,1,1,3], x = 10
输出:5
解释:最佳解决方案是移除后三个元素和前两个元素(总共 5 次操作),将 x 减到 0 。

题目解析:

这道题也是给我们了个数组和一个整数x,让我们从数组左边或者右边拿一个数来减去x直到让他为0,这题干做的话其实挺难的也不好去想,但是我做题一般看到最大连续,最小连续等等的字样,我就会想到滑动窗口,我们可以反过来想,它要减两边的数,那么我可以加中间的数,它要最小操作数,算中间就是加最大操作数,让x减到零就是把数组所有数加起来减x;

算法思路:

1,把数组所有元素相加减x,就是中间元素的target,

2,进窗口:nums[left]相加,

3,判断条件:当相加的结果大于我们的target就出窗口,减去nums[left]的值,

4,更新结果,当相加的值等于target更新长度

5,注意,left不能超过right;

代码实现:

class Solution {public int minOperations(int[] nums, int x) {int left=0, right=0, n=nums.length;int len=-1, num=0, num2=0;for(int i=0;i<n;i++){num2+=nums[i];}int targrt = num2-x;        for(;right<n;++right){num+=nums[right];while(left<=right && num>targrt){num-=nums[left];left++;}if(num==targrt){len = Math.max(len,right-left+1);}}if(len==-1){return -1;}return n-len;}
}

———————————————————————————————————————————

题目五:水果成篮

题目描述:

你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。

你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果:

  • 你只有 两个 篮子,并且每个篮子只能装 单一类型 的水果。每个篮子能够装的水果总量没有限制。
  • 你可以选择任意一棵树开始采摘,你必须从 每棵 树(包括开始采摘的树)上 恰好摘一个水果 。采摘的水果应当符合篮子中的水果类型。每采摘一次,你将会向右移动到下一棵树,并继续采摘。
  • 一旦你走到某棵树前,但水果不符合篮子的水果类型,那么就必须停止采摘。

给你一个整数数组 fruits ,返回你可以收集的水果的 最大 数目。

示例 1:

输入:fruits = [1,2,1]
输出:3
解释:可以采摘全部 3 棵树。

示例 2:

输入:fruits = [0,1,2,2]
输出:3
解释:可以采摘 [1,2,2] 这三棵树。
如果从第一棵树开始采摘,则只能采摘 [0,1] 这两棵树。

示例 3:

输入:fruits = [1,2,3,2,2]
输出:4
解释:可以采摘 [2,3,2,2] 这四棵树。
如果从第一棵树开始采摘,则只能采摘 [1,2] 这两棵树。

示例 4:

输入:fruits = [3,3,3,1,2,1,1,2,3,3,4]
输出:5
解释:可以采摘 [1,2,1,1,2] 这五棵树。

题目解析:

最讨厌阅读理解了,这到题简单来说,就是给我一个数组,完了你的容器中只允许有两种水果,水果的数量可以一直增加,但是水果的种类就能有两种,我们还是可以用暴力做法一个一个枚举,但是他说最大连续呀,它还有容器(窗口);

算法思路:

1,创建数组模拟哈希表,count为容量,本题为两个

2,进窗口:hash[fruits[right]]++,另外如果哈希数组为空count++,

3,更新结果:在判断之前就要更新结果;

4,判断条件:如果count>2那么就要出窗口:hash[fruits[left]]--;

代码实现:

class Solution {public int totalFruit(int[] fruits) {int right = 0, left = 0, n = fruits.length;int count = 0, len = 0;int[] hash = new int[100000];for(;right<n;right++){if(hash[fruits[right]]==0){count++;}hash[fruits[right]]++;while(count>2){hash[fruits[left]]--;if(hash[fruits[left]]==0){count--;}left++;}len = Math.max(len,right-left+1);}return len;}
}

———————————————————————————————————————————

题目六:找到字符串中所有字母的异位词

题目描述:

给定两个字符串 s 和 p,找到 s 中所有 p 的 变位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

变位词 指字母相同,但排列不同的字符串。

示例 1:

输入: s = "cbaebabacd", p = "abc"
输出: [0,6]
解释:
起始索引等于 0 的子串是 "cba", 它是 "abc" 的变位词。
起始索引等于 6 的子串是 "bac", 它是 "abc" 的变位词。

 示例 2:

输入: s = "abab", p = "ab"
输出: [0,1,2]
解释:
起始索引等于 0 的子串是 "ab", 它是 "ab" 的变位词。
起始索引等于 1 的子串是 "ba", 它是 "ab" 的变位词。
起始索引等于 2 的子串是 "ab", 它是 "ab" 的变位词。

题目解析:

我们先来了解下异位词,比如abc 那么异位词就是abc,acb,bac,bca,cab,cba,但是只能有该字符串有的元素和元素数量,这道题就是让我们在字符串中找到所给字符串的异位词,这道题挺麻烦的,可以用暴力枚举但是很显然这题的第二个字符串就是窗口,限制了长度也限制了类型那不就是个窗口嘛;

算法思路:

准备:把俩字符串转换为字符数组(习惯),我们定义两个哈希数组,把目标数组遍历,把所有元素放到哈希数组1中备用,开始遍历数组2,有效字母个数count;

1,进窗口:直接Hash[s[right]]++,这时候判断if(   hash2[s[right]]<=hash1[s[right]]  )时 ,count++,因为只有Hash2中的元素小于等于Hash1时进窗口才会有效,count才能加加,其他任何情况都不行;

2,判断条件:当现在判断的长度大于目标数组长度时,就是right-left+1>目标数组长度,

我们先判断如果出的元素是目标数组中的元素,我们就count--,就是hash2[s[left]]<=hash1[s[left]]的时候,之后让Hash[s[left]]--;left++;

3,更新结果:当有效字母count==目标数组长度时就能更新了

代码实现:

class Solution {public List<Integer> findAnagrams(String ss, String pp) {char[] s = ss.toCharArray();char[] p = pp.toCharArray();int right = 0, left = 0;int ns = s.length, np = p.length;List<Integer> list1 = new ArrayList<>();int[] hash1 = new int[256];int[] hash2 = new int[256];int count = 0;for(int i=0;i<np;i++){hash1[p[i]]++;}for(;right<ns;right++){hash2[s[right]]++;if(hash1[s[right]]>=1 && hash2[s[right]]<=hash1[s[right]]){count++;}if(right-left+1>np){if(hash1[s[left]]>=1 && hash2[s[left]]<=hash1[s[left]]){count--;}hash2[s[left]]--;left++;}if(count==np){list1.add(left);}}return list1;}
}

———————————————————————————————————————————

题目七:串联所有单词的子串

题目描述:

给定一个字符串 s 和一个字符串数组 words words 中所有字符串 长度相同

 s 中的 串联子串 是指一个包含  words 中所有字符串以任意顺序排列连接起来的子串。

  • 例如,如果 words = ["ab","cd","ef"], 那么 "abcdef", "abefcd""cdabef", "cdefab""efabcd", 和 "efcdab" 都是串联子串。 "acdbef" 不是串联子串,因为他不是任何 words 排列的连接。

返回所有串联子串在 s 中的开始索引。你可以以 任意顺序 返回答案。

示例 1:

输入:s = "barfoothefoobarman", words = ["foo","bar"]
输出:[0,9]
解释:因为 words.length == 2 同时 words[i].length == 3,连接的子字符串的长度必须为 6。
子串 "barfoo" 开始位置是 0。它是 words 中以 ["bar","foo"] 顺序排列的连接。
子串 "foobar" 开始位置是 9。它是 words 中以 ["foo","bar"] 顺序排列的连接。
输出顺序无关紧要。返回 [9,0] 也是可以的。

示例 2:

输入:s = "wordgoodgoodgoodbestword", words = ["word","good","best","word"]
输出:[]
解释:因为 words.length == 4 并且 words[i].length == 4,所以串联子串的长度必须为 16。
s 中没有子串长度为 16 并且等于 words 的任何顺序排列的连接。
所以我们返回一个空数组。

示例 3:

输入:s = "barfoofoobarthefoobarman", words = ["bar","foo","the"]
输出:[6,9,12]
解释:因为 words.length == 3 并且 words[i].length == 3,所以串联子串的长度必须为 9。
子串 "foobarthe" 开始位置是 6。它是 words 中以 ["foo","bar","the"] 顺序排列的连接。
子串 "barthefoo" 开始位置是 9。它是 words 中以 ["bar","the","foo"] 顺序排列的连接。
子串 "thefoobar" 开始位置是 12。它是 words 中以 ["the","foo","bar"] 顺序排列的连接。

题目解析:

这题噶比恶心,不是思路难是细节太多太多了,这题跟6题基本上差不多,但是目标数组变成了字符串数组,我们不是一个一个字符判断了,而是两个两个或者三个三个或更多;

算法思路:

准备:计算出目标数组的数组长度nw,和每个单词的长度num,准备两个哈希表Hash1放目标数组,Hash2放遍历数组,有效字符串个数count,执行次数k,这个k是个什么玩意,我们不是要在一组字符串中找这个目标数组符合要求的字符串吗,我们要遍历的数组并不是字符串而是一个一个的字符,我们从第一个字符开始和从第二个字符开始遍历每次截取的结果是不一样的,我弄个图,这说的太绕了:

我们目标数组的长度为2,我们每次遍历都是两个两个的,比如从0下标开始:

我们就会这样遍历完数组最终找到2下标为题目要求的,那么从1下标呢:

又是一组新的遍历结果,再从2下标呢:

结果是和0下标重复的,甚至少了一个,所以我们要进行k(次数)<num(目标数组每个单词的长度)次,最后的准备,把目标元素全部放到Hash1中;

1,进窗口:(先进后判断)Hash2.put(...........) 

if(hash2.getOrDefault(in,0)<=hash1.getOrDefault(in,0)){

                    count++;

                }

这块就和上一题一样

2,判断条件:当right-left+1(当前遍历长度)  >  (目标数组个数*一个多长)nw*num时开始出窗口:先出窗口后判断

if(hash2.getOrDefault(out,0)<=hash1.getOrDefault(out,0)){

                        count--;

                    }

操作有效单词个数;

3,更新结果:当count==nw    把有序的left添加到链表中;

代码实现:

class Solution {public List<Integer> findSubstring(String s, String[] words) {List<Integer> list1 = new ArrayList<>();int left = 0, right = 0;int ns = s.length(), nw = words.length;HashMap<String,Integer> hash1 = new HashMap<>();int count = 0;int num = words[0].length();int k = 0;for(int i=0;i<nw;i++){hash1.put(words[i],hash1.getOrDefault(words[i],0)+1);}while(k<num){right = k;left = k;count = 0;HashMap<String,Integer> hash2 = new HashMap<>();for(;right+num<=ns;right+=num){String in = s.substring(right,right+num);hash2.put(in,hash2.getOrDefault(in,0)+1);if(hash2.getOrDefault(in,0)<=hash1.getOrDefault(in,0)){count++;}if(right-left+1>nw*num){String out = s.substring(left,left+num);if(hash2.getOrDefault(out,0)<=hash1.getOrDefault(out,0)){count--;}hash2.put(out,hash2.getOrDefault(out,0)-1);left+=num;}if(count==nw){list1.add(left);}}k++;}return list1; }
}

———————————————————————————————————————————

题目八:最小覆盖子串

题目描述:

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。

注意:

  • 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
  • 如果 s 中存在这样的子串,我们保证它是唯一的答案。

示例 1:

输入:s = "ADOBECODEBANC", t = "ABC"
输出:"BANC"
解释:最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。

示例 2:

输入:s = "a", t = "a"
输出:"a"
解释:整个字符串 s 是最小覆盖子串。

示例 3:

输入: s = "a", t = "aa"
输出: ""
解释: t 中两个字符 'a' 均应包含在 s 的子串中,
因此没有符合条件的子字符串,返回空字符串。

题目解析:

难度下来啦,这题让我们在一组字符中只要找到有一串字符包含目标数组中几个元素就行了,既然最小连续,那么必定滑动窗口;

算法思路:

准备:模拟两个哈希表使用哈希数组(注意是快),把目标数组中所有元素放到哈希数组1

1,进窗口:将要遍历数组的每个元素放到Hash2如果

if(hash2[s[right]]<=hash1[s[right]]){
                count++;
            }

不解释了,好几遍了,

2,判断条件并更新结果:这里当count==目标数组长度就更新结果并出窗口:

if(hash2[s[left]]<=hash1[s[left]]){

                    count--;

                }

有效字母判断别忘了;

代码实现:

class Solution {public String minWindow(String ss, String tt) {char[] s = ss.toCharArray();char[] t = tt.toCharArray();int left = 0, right = 0;int ns = s.length, nt = t.length;int len = Integer.MAX_VALUE;int count = 0;int[] hash1 = new int[256];int[] hash2 = new int[256];int a=0;int b=0;for(int i = 0;i<nt;i++){hash1[t[i]]++;}for(;right<ns;right++){hash2[s[right]]++;if(hash2[s[right]]<=hash1[s[right]]){count++;}while(count==nt){if(right-left+1<len){len = right-left+1;a = left;b = right;}if(hash2[s[left]]<=hash1[s[left]]){count--;}hash2[s[left]]--;left++;}} if(len==Integer.MAX_VALUE){return "";}return ss.substring(a,b+1);}
}

相关文章:

优选算法合集————双指针(专题二)

好久都没给大家带来算法专题啦&#xff0c;今天给大家带来滑动窗口专题的训练 题目一&#xff1a;长度最小的子数组 题目描述&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, …...

WebSocket协议里客户端发送给服务器的数据会用4字节的掩码循环异或的分析

首先&#xff0c;我需要回顾WebSocket协议中对掩码处理的具体要求。根据RFC 6455&#xff0c;客户端发送到服务器的帧必须使用掩码&#xff0c;而服务器发送的帧不需要掩码。掩码是4字节的&#xff0c;应用于有效载荷数据&#xff0c;每个字节依次与掩码的对应字节异或&#xf…...

【字节青训营-9】:初探字节微服务框架 Hertz 基础使用及进阶(下)

本文目录 一、Hertz中间件Recovery二、Hertz中间件跨资源共享三、Hertz 响应四、Hertz请求五、Hertz中间件Session 一、Hertz中间件Recovery Recovery中间件是Hertz框架预置的中间件&#xff0c;使用server.Default()可以默认注册该中间件&#xff0c;为Hertz框架提供panic回复…...

新版AndroidStudio 修改 jdk版本

一、问题 之前&#xff0c;在安卓项目中配置JDK和Gradle的过程非常直观&#xff0c;只需要进入Android Studio的File菜单中的Project Structure即可进行设置&#xff0c;十分方便。 如下图可以在这修改JDK: 但是升级AndroidStudio之后&#xff0c;比如我升级到了Android Stu…...

cocos spine执行动画报错Cannot read properties of null (reading ‘data‘)

cocos v3.8.3 当想this.spine.setAnimation(0, "action1", false);播放spine动画时报错↓ 解决方法一&#xff1a; 在setAnimation之前调用this.spine.__preload() 解决方法二&#xff1a; 不要让spine或其父节点通过active显隐...

笔记:新能源汽车零部件功率级测试怎么进行?

摘要:本文旨在梳理主机厂对新能源汽车核心零部件功率级测试需求,通过试验室的主流设备仪器集成,快速实现试验方案搭建,并体现测试测量方案的时效性、便捷性优势。目标是通过提升实现设备的有效集成能力、实现多设备测试过程的有效协同、流程化测试,可快速采集、分析当前数…...

【starrocks学习】之将starrocks表同步到hive

目录 方法 1&#xff1a;通过HDFS导出数据 1. 将StarRocks表数据导出到HDFS 2. 在Hive中创建外部表 3. 验证数据 方法 2&#xff1a;使用Apache Spark同步 1. 添加StarRocks和Hive的依赖 2. 使用Spark读取StarRocks数据并写入Hive 3. 验证数据 方法 3&#xff1a;通过…...

Linux提权--SUDO提权

​sudo​ 是 Linux 中常用的特权管理工具&#xff0c;允许普通用户以其他用户&#xff08;通常是 root 用户&#xff09;的身份运行命令。如果配置不当&#xff0c;攻击者可能通过滥用 sudo​ 权限来提升自己的权限。 一.常见的 sudo 提权方法&#xff1a; 误配置的 sudo 权限&…...

【AIGC提示词系统】基于 DeepSeek R1 + Claude 的新年运势占卜系统设计与实现

提示词在最下方 DeepSeek R1调试了整体的提示词&#xff0c;使用Claude进行渲染 引言 在人工智能与传统文化交融的今天&#xff0c;如何让 AI 充分理解并传递东方玄学文化的精髓&#xff0c;成为一个极具挑战性的课题。本文将详细介绍一个基于 Claude 的新年运势占卜系统的设计…...

11. Global Object 全局对象的使用

Global Object 全局对象 1 引言2 制作全局对象3 调用全局对象4 扩展使用1 引言 全局对象适用于大量重复的对象,比如阀门,电机等,如果这些设备的基本逻辑与状态都是一样的,那么就可以使用全局对象的方法来做HMI,省时省力。并且在后期修改的时候只需要修改全局对象即可。 …...

Java synchronized锁升级

偏向锁、轻量级锁和重量级锁是Java中synchronized关键字的三种锁状态&#xff0c;用于优化多线程环境下的性能。以下是它们的简要说明&#xff1a; 1. 偏向锁&#xff08;Biased Locking&#xff09; 目的&#xff1a;减少无竞争时的锁开销。适用场景&#xff1a;只有一个线程…...

【Hadoop】Hadoop的HDFS

这里写目录标题 HDFS概述HDFS产出背景及定义HDFS产生背景HDFS定义 HDFS优缺点HDFS优点HDFS缺点 HDFS组成架构HDFS文件块大小 HDFS的Shell操作常用命令实操准备工作上传下载HDFS直接操作 HDFS的API操作客户端环境准备HDFS的API案例实操HDFS文件上传HDFS文件下载HDFS文件更名和移…...

JAVA异步的TCP 通讯-客户端

一、客户端代码示例 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.AsynchronousSocketChannel; import java.nio.channels.CompletionHandler; import java.util.concurrent.ExecutorService; impo…...

4.回归与聚类算法 4.1线性回归

4.1.1 线性回归的原理 1 线性回归应用场景&#xff1a; 房价预测 销售额度预测 金融&#xff1a;贷款额度预测&#xff0c;利用线性回归以及系数分析因子 2 什么是线性回归 1&#xff09; 定义&#xff1a;利用回归方程&#xff08;函数&#xff09;对一个或者多个自变量…...

联想拯救者开机进入bios

如果你的联想拯救者&#xff08;Lenovo Legion&#xff09;笔记本电脑开机后直接进入 BIOS 设置界面&#xff0c;可能是以下原因之一导致的。以下是解决方法&#xff1a; 1. 检查启动顺序 进入 BIOS 后&#xff0c;找到 Boot&#xff08;启动&#xff09;选项卡。检查启动顺序…...

【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(四)

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;贪心算法篇–CSDN博客 文章目录 前言例题1.合并区间2.无重叠的区间3.用最少数量的箭引爆气球…...

Junit5使用教程(3)

第三部分&#xff1a;JUnit 5 进阶 3. 动态测试 一、动态测试是什么&#xff1f; 动态测试&#xff08;Dynamic Test&#xff09;允许在运行时生成测试用例&#xff0c;而不是在编译时通过 Test 静态定义。它通过 TestFactory 注解标记的方法动态生成一组测试用例&#xff0…...

WPS中解除工作表密码保护(忘记密码)

1.下载vba插件 项目首页 - WPS中如何启用宏附wps.vba.exe下载说明分享:WPS中如何启用宏&#xff1a;附wps.vba.exe下载说明本文将详细介绍如何在WPS中启用宏功能&#xff0c;并提供wps.vba.exe文件的下载说明 - GitCode 并按照步骤安装 2.wps中点击搜索&#xff0c;输入开发…...

通向AGI之路:人工通用智能的技术演进与人类未来

文章目录 引言:当机器开始思考一、AGI的本质定义与技术演进1.1 从专用到通用:智能形态的范式转移1.2 AGI发展路线图二、突破AGI的五大技术路径2.1 神经符号整合(Neuro-Symbolic AI)2.2 世界模型架构(World Models)2.3 具身认知理论(Embodied Cognition)三、AGI安全:价…...

kamailio-osp模块

该文档详细讲解了如何在Kamailio中配置和使用OSP模块&#xff08;Open Settlement Protocol Module&#xff09;&#xff0c;以实现基于ETSI标准的安全多边对等互联&#xff08;Secure Multi-Lateral Peering&#xff09;。以下是核心内容的总结&#xff1a; 1. 模块功能 OSP模…...

【Linux网络编程】:URL(encode),HTTP协议,telnet工具

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ Linux网络编程笔记&#xff1a; https://mp.csdn…...

SpringMVC SpringMVC响应 一、数据处理及跳转

1. 结果跳转方式 ①.ModelAndView 设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 <bean id"templateResolver" class"org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver"><property name"p…...

C++SLT(三)——list

目录 一、list的介绍二、list的使用list的定义方式 三、list的插入和删除push_back和pop_backpush_front和pop_frontinserterase 四、list的迭代器使用五、list的元素获取六、list的大小控制七、list的操作函数sort和reversemergeremoveremove_ifuniqueassignswap 一、list的介…...

基于Coze平台实现抖音链接提取文案转小红书文案的智能体开发全流程解析

文章目录 引言:跨平台内容运营的AI解法实例最终效果1. 平台特性对比与转化需求分析1.1 用户画像与内容风格对比1.2 文案转化核心需求2. Coze平台技术架构解析2.1 Coze核心能力矩阵2.2 关键技术组件选型3. 智能体工作流设计3.1 完整处理流程3.2 关键节点说明4. 核心模块实现详解…...

32. 最长有效括号

动态规划 dp[i]表示以i下标为结尾的最长有效括号的长度&#xff0c;取dp[i]中的最大值即可。 i从1开始判断&#xff0c;只有s[i])才需要判断&#xff1a; 如果s[i-1](&#xff0c;那么dp[i]dp[i-2]2&#xff0c;注意判断i-2的范围否则&#xff0c;如果dp[i-1]>0&#xff0…...

Linux常见问题解决方法--2

如何反爬 后台对访问进行统计&#xff0c;如果单个 IP 访问超过阈值&#xff0c;予以封锁 后台对访问进行统计&#xff0c;如果单个 session 访问超过阈值&#xff0c;予以封锁 后台对访问进行统计&#xff0c;如果单个 userAgent 访问超过阈值&#xff0c;予以封锁 以上的组…...

STM32H7和F7 主要区别

STM32H7和F7系列是STMicroelectronics推出的高性能ARM Cortex-M微控制器系列&#xff0c;二者在性能、外设和用途上有显著区别。以下是它们的主要区别&#xff1a; 1. 内核与性能 STM32H7&#xff1a; 内核&#xff1a;Cortex-M7&#xff08;单核或双核&#xff0c;部分型号带…...

软件测试丨PyTorch 图像目标检测

随着人工智能和机器学习的飞速发展&#xff0c;图像目标检测技术在各个领域扮演着越来越重要的角色。无论是在安防监控、自动驾驶车辆&#xff0c;还是在医疗影像分析和智能家居中&#xff0c;图像目标检测都发挥着不可或缺的作用。今天&#xff0c;我们将深入探讨其中一种热门…...

利用TensorFlow.js实现浏览器端机器学习:一个全面指南

引言 随着深度学习技术的不断发展&#xff0c;机器学习已从传统的服务器端运算逐渐转向了前端技术。TensorFlow.js 是 Google 推出的一个用于在浏览器中进行机器学习的开源库&#xff0c;它允许开发者在浏览器中直接运行机器学习模型&#xff0c;而无需依赖后端服务器。Tensor…...

全流程安装DeepSeek开源模型

目录 安装Ollama选择大模型安装大模型对话备注 安装Ollama 安装DeepSeek首先需要安装一个Ollama&#xff0c;这个软件相当于运行DeepSeek模型的底层&#xff0c;没有这个底层就没办法跑DeepSeek AI模型。 下载地址&#xff1a; https://ollama.com/点击下载windows版本&…...

VulnHub | Prime - 1

https://vulnhub.com/entry/prime-1,358/https://vulnhub.com/entry/prime-1,358/ 0x01&#xff1a;靶场简介 Prime 1 是 VulHub 中的一台用于 OSCP 考试练习的靶机。通过本靶机&#xff0c;我们可以系统的了解的渗透测试的全流程。本靶机的通关目标如下&#xff1a; Get The…...

实验十 Servlet(一)

实验十 Servlet(一) 【实验目的】 1&#xff0e;了解Servlet运行原理 2&#xff0e;掌握Servlet实现方式 【实验内容】 1、参考课堂例子&#xff0c;客户端通过login.jsp发出登录请求&#xff0c;请求提交到loginServlet处理。如果用户名和密码相同则视为登录成功&#xff0c…...

寒假刷题Day22

一、2570. 合并两个二维数组 - 求和法 class Solution { public:vector<vector<int>> mergeArrays(vector<vector<int>>& nums1, vector<vector<int>>& nums2) {int i 0, j 0, n1 nums1.size(), n2 nums2.size();int tmp 0;…...

KES数据库实践指南:探索KES数据库的事务隔离级别

引言 前两篇文章我们详细讲解了如何安装KES金仓数据库&#xff0c;并提供了快速查询和搭建基于coze平台的智能体的解决方案。今天&#xff0c;我们的焦点将放在并发控制机制和事务隔离级别上。 本文将通过一系列实验操作&#xff0c;深入探讨KES数据库中的并发控制机制和事务…...

基于STM32的智能加湿器设计(新版本)

目录 1、设计要求 2、系统功能 3、演示视频和实物 4、系统设计框图 5、软件设计流程图 6、原理图 7、主程序 8、总结 &#x1f91e;大家好&#xff0c;这里是5132单片机毕设设计项目分享&#xff0c;今天给大家分享的是加湿器。设备的详细功能见网盘中的文章《12、基于…...

Electricity Market Optimization 探索系列(三)

本文参考链接link 电网容量规划是一个寻求最优发电容量的过程&#xff0c;找到的最优发电容量能够可靠地满足未来电网的需求 发电机的容量和发电成本呈正相关关系&#xff0c;一台发电机的发电量不能超过其额定发电容量&#xff0c;结合我之前的博客所说的内容&#xff0c;可…...

JAVA进阶之线程

为神马有线程&#xff1f;这玩意儿在干嘛&#xff1f;&#xff1f;&#xff1f; 回答这个问题&#xff0c;就先要知道一点点计算机的工作方式。 总所周知&#xff0c;计算机有五部分&#xff1a;输入输出、计算器、存储器、控制器。而在计算机内&#xff0c;CPU、内存、I/O之…...

浙江安吉成新照明电器有限公司分布式光伏发电项目--安科瑞Acrel-1000DP分布式光伏监控系统

安科瑞 崔丽洁 项目背景 随着可再生能源的发展&#xff0c;分布式光伏发电成为重要的能源利用方式。浙江安吉成新照明电器有限公司 3234.465kWp 分布式光伏发电项目应运而生。该公司是螺旋节能灯毛管专业生产企业&#xff0c;于 2007 年 6 月成立&#xff0c;具备全自动生产线、…...

pytorch实现主成分分析 (PCA):用于数据降维和特征提取

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 使用 PyTorch 实现主成分分析&#xff08;PCA&#xff09;可以通过以下步骤进行&#xff1a; 标准化数据&#xff1a;首先&#xff0c;需要对数据进行标准化处理&#xff0c;确保每个特征的均值为 0&#xff0c;方差…...

2025_2_4 C语言中关于free函数及悬空指针,链表的一级指针和二级指指针

1.free函数 free函数所接受的参数只能是动态分配出来的内存&#xff0c;&#xff0c;否者free的行为是未定义的同一片内存空间不能被free两次 free过后的内存可能会引发悬空指针的问题 2.悬空指针 悬空指针的问题主要是free过后的内存空间&#xff0c;原先指向这片空间的指…...

pytorch逻辑回归实现垃圾邮件检测

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 完整代码&#xff1a; import torch import torch.nn as nn import torch.optim as optim from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split …...

一次线程数超限导致的hive写入hbase作业失败分析

1.集群配置 操作系统:SuSe操作系统 集群节点:100台相同配置的服务器 单台:核心112Core,内存396G 2.问题现象 现象1:跑单个入库任务报错,批量提交任务后出现OOM异常 执行12个hivesql,将数据写入hbase.hbase入库有近一半的任务报错。 每次报错的任务不是同一个,hivesql…...

JAVA安全—反射机制攻击链类对象成员变量方法构造方法

前言 还是JAVA安全&#xff0c;哎&#xff0c;真的讲不完&#xff0c;太多啦。 今天主要是讲一下JAVA中的反射机制&#xff0c;因为反序列化的利用基本都是要用到这个反射机制&#xff0c;还有一些攻击链条的构造&#xff0c;也会用到&#xff0c;所以就讲一下。 什么是反射…...

Java集合面试总结(题目来源JavaGuide)

问题1&#xff1a;说说 List,Set,Map 三者的区别&#xff1f; 在 Java 中&#xff0c;List、Set 和 Map 是最常用的集合框架&#xff08;Collection Framework&#xff09;接口&#xff0c;它们的主要区别如下&#xff1a; 1. List&#xff08;列表&#xff09; 特点&#xf…...

【区块链】深入理解椭圆曲线密码学(ECC)

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 深入理解椭圆曲线密码学(ECC)1. 概述2. 椭圆曲线的数学基础2.1 基本定义2.2 有限…...

接口游标分页

由于数据库本身的的限制(以MySQL为例),以 page_num,page_size 为代表的偏移分页方式不可避免的会遇到深分页问题。 不过用户若要找符合条件的少量数据,通过翻页则十分低效,且大多用户也不会往后翻很多页,故对于C端筛选数据场景,限制分页数量增加筛选条件才是标准解决方…...

大数据数仓实战项目(离线数仓+实时数仓)2

目录 1.课程目标和课程内容介绍 2.数仓维度建模设计 3.数仓为什么要分层 4.数仓分层思想和作用 5.数仓中表的种类和同步策略 6.数仓中表字段介绍以及表关系梳理 订单表itcast_orders 订单明细表 itcast_order_goods 商品信息表 itcast_goods 店铺表 itcast_shops 商…...

C++输入输出(上)

cin和cout cin是C中提供的标准输入流对象,一般针对的是键盘,也就是从键盘上输入的字符流,使用 cin来进行数据的提取,cin一般是和 >> (流提取运算符) 配合使用的。 cin的功能和scanf是类似的 cout是C中提供的标准输出流对象,一般针对的是控制台的窗口,也就是将数据以字符…...

SpringBoot 连接Elasticsearch带账号密码认证 ES连接 加密连接

依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency>配置文件 es:ip: 172.23.4.130port: 9200user: elasticpassword: qwertyuiop读取配置文件…...

选择排序

选择排序的基本思想&#xff1a; 每⼀次从待排序的数据元素中选出最⼩&#xff08;或最⼤&#xff09;的⼀个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待 排序的数据元素排完。 直接选择排序 1. 在元素集合 array[i]--array[n-1] 中选择关键码最⼤(⼩)的数据…...