1.双指针

总结:

1.复写0这道题,告诉我们要正难其反,我们从后向前进行重写,删除某些数字的时候,我们可以从前向后遍历,但是增加一些数字的时候会对后面的数据进行覆盖,所以要从后向前进行

2.快乐数涉及到环的题目第一就要想到快慢双指针

3.  1.3到1.7这几道题其实都是利用了单调性的性质,在暴力枚举的基础上,节省了时间复杂度

1.1.复写0

解题思路:

1.这道题遇到0就会向后进行覆写操作,所以我们按照正常的思路从前向后便利的时候,

遇到0,进行覆写,就会将0后面的数字进行覆盖,造成数据的丢失

所以我们要正难其反,我们从后向前进行重写,

所以我们就引出了第二个问题,如何在数组中找到变型后的最后一位数字

2.如何在数组中找到变型后的最后一位数字,定义两个指针,cur和ret,ret起始为-1,cur为0,cur从前向后进行遍历,arr【cur】==0,ret+=2;反之 ret+=1;

代码实现:

注意点:

1.ret判断的结束条件一定在cur++的前面

2.边界情况

当我cur指向的最后一个数字是0的时候,ret是连休跳两格,所以要处理边界情况

1.2.快乐数

解题思路:

1.我们都会发现,给定的数都会最后进入一个循环当中,要么是一个不包括数字1的循环,要么是一个只包括数字1的循环

2.涉及到环的题目第一就要想到快慢双指针,fast和last fast一次走两步,last一次走一次,最后一定会相遇,此时相遇以后跳出循环,判断2遇到的值是否是1即可

代码实现:

1.3.盛最多水的容器

解题思路:

1其实这道题要要使用单调性来做,定义两个指针,一个是left左区间,right右区间

假设此时left在0下标,right在n-1下标,

那么此时的  V=L*H

此时我的L是最大的,但是我的高度是以较小值为基准,

若此时  以最小值的高度和其他下标进行匹配,只会出现以下两种情况

V=L(减小)* H(不变);

V=L(减小) *H(减小);

所以我们此时如果还用较小的高度和其他下标进行匹配,结果一定是变小的,

所以此时我们可以直接跳过跳过较小的一方,

这样循环,直到left==right结束

代码实现:

1.4.有效三角形的个数

解题思路:

判断三条边是否能构成三角形,只需判断 A+B>C(最大的边)

所以就转换成在一个数组中固定一个最大的数,再找其他两条边的问题

所以此时我们就要想到使用单调性的性质,

假设此时是一个有序的数组,

我们从后向前依次固定最大数然后在最大值的左区间找匹配的另外两条边即可

此时有两种情况:

情况一:A+B>C:因为数组是有序的,所以A下标到B下边-1的区间的数据都是符合条件的,

算出区间的大小进行累加,再将第二大的边进行--;即可

情况二:A+B<C:A向前走一步即可

代码实现:

1.5.和为 s 的两个数字

代码实现:

1.6.三数之和

解题思路:

其实思路和之前的求有效个数的三角形是一样的,从后往前依次固定一个数,再在其左区间找到符合条件的另外两个数,也是也运用了单调性的性质

代码实现:

注意点:

 此时的要求是不能有重复的数据组

1.当遇到符合条件的数据组的时候,此时的left要向前寻找一个新的值,right要向后寻找一个新的值

此时还要主意一点就是注意数组越界的问题

2.当一个固定的值结束以后,固定值也是要跳过相同的值,寻找新的值

此时就不可以两边都对i进行移动,防止错过合适的数据组

1.7.四数之和

解题思路:

代码的思路其实就是在三数之和的基础上多套一层,多了一个固定的数而已

代码实现:

注意点:

注意点1:依旧是 去重+防止越界

注意点二:数据太大,改成long long类型

2.滑动窗口

总结:

使用场景:

当题目给定一个数组,让你在数组中寻找的符合条件的子区间,此时我们就可以使用滑动窗口来解决这道问题。

滑动窗口的行为:定义两个指针left和right,分别表示子区间的区间和右区间,两个指针都是从前向后进行移动,直到右区间超出了数组的范围才结束

所以可以到得出一个结论,这个数组一定是单调的(这里的单调并不是升序,降序的表面含义)当right向右走(范围扩大)离我们要符合的目标值就更进一步,当left向右走(范围变小)离我们要符合的目标值就更远一步,

分类:

滑动窗口分成动态的滑动窗口(大小可变)和动态的滑动窗口(大小不变)

2.6是静态的,其余都是动态的

2.1.长度最小的子区间

解题思路:

1.其实我们一开始想到的思路就是,我定义两个指针 left 和right 将数组中所有的子数组都列举出来,就可以找到最小的长度,但是一定会超出时间限制

2.此时我们就想想,在哪里可以做出一些优化,

ret:长度

sum:记录区间的值

left:左区间

right:右区间

第一点:数组都是正数,只要区间变大(right向右移动),sum和就一定会变大,反之(left向右移动)变小,

所以我们会遇到两种情况,

sum<target:right向右移动,时sum变大

sum>=target:left位置给去除,left++,此时right从left从新开始记录

注意:此时要优化的点就是right不需要再次重新从left位置进行记录,

right再次重新从left位置向前走,无非时再次记录重复的区间

所以

left位置给去除,left++,

又会出现两种情况

sum>=target:再次进行更新即可

sum<target:继续寻找符合要去的区间,right向右移动

代码实现:

细节注意:

1.求最小值,一开始就定义最大值,返回阶段要对结果进行判断

2.缩小左区间的时候,要一直缩小到sum重新小于目标值为止,记得更新右区间

2.2.无重复字符的最长字串

解题思路:

这道题和上道题很相似,统计子串的最长的长度,所以同向的双指针可以解决这道问题

代码实现:

细节注意:

1.数组模拟hash表

2.代码的执行顺序

1.先更新右窗口

2.判断是否符合条件

3.更新长度

原因:在不断更新右区间的过程,有两种情况

1.加入后依旧不重复,不用更新left,直接更新结果

2.加入后重复,更新left,更新结果也没事,此时找的时最大的区间,left向右移动,一定是减小长度,len不会被影响

3.如果不符合条件的话,下一次left的起始位置时重复的下一个字符

4.判断是否符合条件时,判断新加入的字符映射的hash表的个数是否已经大于1

2.3.最大连续1的个数

解题思路:

此时我们要将此题目进行转变成

在数组中找到一个最大的子区间,其中子区间的中0的个数不能超过k

此时就是我们熟悉的找到一个最长的连续子区间,利用单调性,使用滑动窗口来解决此题目·

代码实现:

2.4.将减到0的最小操作数

解题思路:

正难则反:题目要我们在最左边和最右边找到两个区间,这俩区间的值加起来等于目标值,

我们就可以转换成,在数组中找到一个子区间,这个区间的值等于count-x,但是要这个区间的长度最长的问题

代码实现:

细节注意:

1.边界问题:

count-x=负数:不存在,直接返回-1

count-x==0:直接返回数组的大小即可

2.凑不出的情况:

2.5.水果成蓝

解题思路:

其实这道题的意思就是找到一个最长的子区间,其中的种类不能超过两种,

同向双指针,滑动窗口

代码实现:

细节:

容器的使用:

1.种类是否超出限制 使用size()

2.删除种类,使用 erase

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

解题思路:

这个滑动窗口的思路比之前的更加的明显,因为此时窗口的大小是不变的,一直以p,size()的大小一直向后进行移动

代码实现:

细节:

1.中间有个步骤比较两个hash1和hash2是否相同,相同的话就是符合条件反之不符合

但是如果我们是对两个hash表进行遍历,来进行比较,效率太低了

此时我们定义一个count值,count出现的地方右三处,用于记录有效字符的个数

1.在进窗口的时候

hash2【字符】小于hash【字符】的个数的话,count就++

2.在出窗口的时候

hash2【字符】小于等于hash【字符】的个数的话,count就--

3.判断区间是否是合法区间

count==给定字符串的个数,那么此时就是合法区间

2.7.串联所有单词的子串

解题思路:

这道题其实是可以转换成找到字符串中所有字母异位词

我们只需要将将words[i].length 个字符看作成一个整体

代码实现:

细节处理:

1.根据words 中所有字符串 长度相同,而且字符串 s是由words 中的单词所组成,所以我们就可以这道题转化成找到字符串中所有字母异位词来做,

大体的的要循环words字符串 长度,

2.left和right下标的移动也是以一个len为一个单位进行移动

3.使用字符串容器接口,取指定位置的子字符串

2.8.最小的覆盖子串

解题思路:

和之间一样定义两个双指针,从左往右进行遍历,,不断的更新最小的区间

代码实现:

细节处理:

1.此时的count不是和之前记录有效字符的个数,而是记录有效字符的种类

因为之前题目的子区间中的字符个数个数是一 一对应的,但是此时假设我原数组中只有一个A,

但是我子区间有两个A,这样的子区间也是符合条件的

3.二分查找

总结:

是否能够使用二分查找,看看数组是否具有二段性,再进行判断是是使用哪个二分模版

使用情景:

当数据具有二段性的时候我们就可以使用二分查找的算法,此时的二段性并不是代表数组有序的意思。

在3.1~3.4中,数组是有序是,所以此时他们的二段性是:小于更新左区间,大于更新右区间

3.5和3.6,数组并不有序,但是它的二段性是:前一个小于后一个更新左区间,前一个大于后一个更新右区间

3.7中,也是无序的,但是二段性是找出一个基准值:大于基准值更新左区间,小于基准值更新右区间

3.8中,的二段性是根据index和arr【index】是否相等来确定

模版分类:

朴素二分:

朴素二分,就是将具有二段性的数组三部分:小于target, 等于taeget ,大于target

注意点:循环结束条件:left<right, 每次的移动:left=mid+1;  和  right=mid-1;

查找区间左端点模版:

找到符合条件的最左边的位置

此时就是将数组分成 小于target 和 大于等于target 两部分,

mid落在 小于target的时候,left=mid+1;left是一直在试图跳出不符合这个target的区间,

mid落在 大于等于target的时候,right=mid;right只能不断的靠近左区间,并不会跳出这个区间

注意:

1.循环的结束条件:left<right;当left==right的时候就是最后的结果

2.mid=left+(right-left)/ 2;个数是偶数的时候,mid位置靠左,防止死循环

查找区间右端点模版:

找到符合条件的最右边的位置

此时就是将数组分成 小于等于target 和 大于target 两部分,

mid落在 大于target的时候,right=mid+1;right是一直在试图跳出不符合这个target的区间,

mid落在 小于等于target的时候,right=mid;right只能不断的靠近右区间,并不会跳出这个区间

注意:

1.循环的结束条件:left<right;当left==right的时候就是最后的结果

2.mid=left+(right-left+1)/ 2;个数是偶数的时候,mid位置靠右,防止死循环

3.1.二分查找

解题思路:

这道题就是经典的朴素的二分算法

代码实现:

细节分析:

3.2.在排序数组中查找元素的第一个和最后一个位置

解题思路:

先将数组分成 小于target 和 大于等于target 两部分,找到最左边的值,

再将数组分成 大于target 和 小于等于target 两部分,找到最右边的值

代码实现:

细节分析:

1.处理边界情况:

2.不存在的情况,要对下标进行验证

3.3.搜索插入的位置

解题思路:

如果目标值都存在的话就是,就使用朴素的二分算法,

但是此时有可能target这个值不存在就需要返回,如果存在本该插入的位置,也就是大于target最近的位置,

所以此时我们就可以将数组分成 小于target 和 大于等于target 两部分,找到最左边的值,

代码实现:

细节:

当目标值不存在,并且比所有的值都要小的时候,left和right会停在起始位置,是我们最终的结果,不需要特殊处理,但是如果此时目标值比所有的值都要大,left和right停在n-1的位置,但是插入的位置是n,所以对这需要特殊处理一下

3.4.x的算术平方根

解题思路:

要求x的算术平方根,暴力的解决方法就是,从0向后一直进行遍历,直到一个数的平方,大于x,

所以我们就可以找到一个区间,1~x,这个区间,将这个区间分成小于等于target 和 大于target 两部分,进行二分查找

代码实现:

细节处理:

1.处理0

2.换成 long long 扩大范围

3.5.山脉数组的峰顶索引

解题思路:

并不是说数组有序才能使用二分查找算法,只要数组具有二段性,我们就可以使用二分查找算法,

下面这个数组就是天然的二段性,前面的 arr[i]>arr[i-1]  ,后面的  arr[i]<arr[i-1]

所以

就将数组分成arr[i]>arr[i-1]  , arr[i]<arr[i-1] 两部分,并寻找arr[i]>arr[i-1] 的最右区间

代码实现:

3.6.寻找峰值

解题思路:

这道题和上道题的唯一的一个差异就是,上道题只有一个峰值,这道题有多个峰值

其实都一样,找出其中的二段性,选择 mid 和mid-1的位置

1.当 nums[mid-1]<nums[mid]:右边的区间一定有峰值,left=mid;

2.当 nums[mid-1]>nums[mid]:左边的区间一定有峰值,right=mid-1;

代码实现:

代码的实现其实和上道题一模一样


3.7.寻找旋转排序数组中的最小值

解题思路:

c是我们要找的值,

此时我们以D位置的值为基准点,A~B区间的值都比D要大,C~D都是小于等于D,

所以此时这就是是我们要寻找的二段性,

1.mid落在A~B区间 ,left=mid+1;

2.mid落在C~D区间 ,right=mid;

代码实现:

3.8.点名

解题思路:

可以发现此时的二段性是与数组的下标是有关系的,

在没有缺失数字之前,index==arr[index],是相同的,反之后面便不是对应的

根据此时的二段性,

1.mid落在对应的区间,left=mid+1;

2..mid落在不对应的区间,right=mid;,因为此时要寻找不对应的右区间

代码实现:

细节处理:

有可能·缺失的是最后一个数,此时的边界情况需要处理

4.前缀和

总结:

前缀和:就是为了快速的求出一段连续的区间的和

4.1.一维数组前缀和模板

解题思路:

第一步:预处理一个前缀和数组

dp[ i ] 表示:表示 [1,i ]区间的所有元素和;

dp[ i ]=dp[ i-1 ]+arr[ i ];

第二步:前缀和数组使用

[ L, R ] ---->dp[R]-dp[L-1] ;

代码实现:

细节处理:

为什么要对dp数组和arr数组初始化一个虚拟的节点?

为了处理边界情况:当我们默认arr【0】=0和dp【0】=0,arr数组和dp数组都是从下标为 1开始初始化,就不会出现 dp【-1】和arr【-1】的情况。

4.2.二维数组前缀和模板

解题思路:

1.预处理一个前缀和矩阵

dp[i]j] 表示:从[1,1]位置到 [i,j] 位置,这段区间里面所有元素的和

初始化方程:dp[i]j] =dp[i-1]j]+dp[i]j-1] +arr[i]j] -dp[i-1]j-1]

2.使用前缀和矩阵

给出了 两个坐标

结果:dp[x2][y2]-dp[x1-1][y2]-dp[x2][y1-1]+dp[x1-1][y1-1]

代码实现:

细节处理:

依旧是多开辟出,最上层的一行和最左边的一列

4.3.寻找数组的中心下标

解题思路:

根据题意可知,

假设我们此时的下边为3

左侧数之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,
右侧数之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,

两者都没有加上下标为3的数组位置,

所以我们可以定义两个dp数组

一个是前缀和数组,一个是后缀和数组

前缀和状态转移方程:dp1[i]=dp[i-1]+arr[i];

后缀和状态转移方程:dp2[i]=dp2[i+1]+arr[i];

代码实现:

代码实现:

在前缀和中dp1[0]和dp2[n-1]默认为0,不进入循环

4.4.除自身以外数组的乘积

解题思路:

其实这道题的思路和上道题一摸一样

所以我们可以定义两个dp数组

一个是前缀积数组,一个是后缀积数组

前缀积状态转移方程:dp1[i]=dp[i-1]*arr[i];

后缀积状态转移方程:dp2[i]=dp2[i+1]*arr[i];

代码实现:

细节处理:

此时dp1[0]和dp2[0]都要初始化为1

4.5.和为K的子数组

解题思路:

这道题,可能大家都和我一样,首先想到的解法是滑动窗口,双指针的思想,但是这道题并不可以使用双指针,

注意:双指针的特性:left和right都是向前进行移动,进窗口就表示增加,出窗口就表示减少,但是这道题的范围是有0和负数的

这道题还是使用前缀和的思想,

第一步:定义一个指针i,使指针从前向后,进行遍历,找到一个位置,就计算他的前缀和,

sum:代表i位置的前缀和

第二步:在i位置之前找到sum-i的前缀和,但是如果硬找的话,时间复杂的还是n的平方,

所以要借助一个hash表,来存储,前缀和和它对应的个数,

代码实现:

魔鬼细节处理:

1.前缀和加入哈希表的时机?
在计算i位置之前,哈希表里面只保存[0,i-1]位置的前缀和


2.不用真的创建一个前缀和数组
用一个变量 sum 来标记前一个位置的前缀和即可


3.如果整个前缀和等于k 呢?

提前在hash表中的 hash[ 0 ]=1;

4.6.和可被 K 整除的子数组

解题思路:

补充两个知识点:

1.同余定理:

a%p和b%p的余数是一样的

2.负数的修正

a%b:a如果是一个复数的话,结果是一个负数,

所以-->a%b+b:但是此时a如果是一个正数的话就不行

所以:(a%b+b)%b;

有了这里两个知识点以后,这道题的解题的思路就是上道题是一样的

代码实现:

细节处理:

3.如果整个前缀和等于k 的倍数呢?

提前在hash表中的 hash[ 0 ]=1;

4.7.连续的数组

解题思路:

依旧是因为此时的数组中有0的存在,所以不能使用滑动窗口的思想来做

根据题目的意思:数组中不是1就是0

我们此时可以将所有的0给的换成-1,

此时题目就转换成了:找出数组中最长的字串,此字串的和为0,就是 4.5了

代码实现:

细节处理:

此时需要的最后结果是长度

1.此时的hash表中,第一个存入的是前缀和,第二个存入的是前缀和的下标

2.如果整个前缀和等于k 呢?

提前在hash表中的 hash[ 0 ]=-1;

3.如果遇见的相同的前缀和要更新前缀和吗?

只更新结果,不加入到hash表中,因为越前的长度,一定比越后面的长度要长

4.8.矩阵区域和

解题思路:

给定一个范围,让我们求解这个矩形范围的数据和,第一时间想的的解法就是使用前缀和,但是这道题是二维前缀和

代码实现:

细节处理:

注意下标的映射关系,在原数组中和要提交的数组中,数据都是满的,但是dp数组中最上的和最左边的数据都是空的

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode-283. 移动零(Java)

283. 移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: n…

【数据库】慢SQL优化 - MYSQL

一、数据库故障的关键点 引起数据库故障的因素有操作系统层面、存储层面&#xff0c;还有断电断网的基础环境层面&#xff08;以下称为外部因素&#xff09;&#xff0c;以及应用程序操作数据库和人为操作数据库这两个层面&#xff08;以下称内部因素&#xff09;。这些故障中外…

桶排序算法深度剖析

&#x1f50d; 桶排序算法深度剖析 &#x1f3af; 核心原理图解⚙️ 完整算法流程 #mermaid-svg-LyB6SpaZ132X4Wtn {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LyB6SpaZ132X4Wtn .error-icon{fill:#552222;}#mer…

对S32K144做的BMS安装快速开发Simulink库及BMS例程介绍

前言 本章介绍BMS硬件功能及SimuLink库为主&#xff0c;捎带介绍一些例程内容 注意&#xff1a;例程所用的协议均是自定义的 自做的SimuLink库也会不定期更新 BMS例程的内容不定期维护添加 当前的BMS没有主动均衡功能&#xff0c;这个有考虑后期加上&#xff0c;当前还处于…

urlencode、html实体编码、unicode

目录 urlencode html实体编码 Unicode编码 urlencode URL编码也称为百分号编码&#xff0c;用于将URL中的特殊字符转换为安全传输的格式。英文数字一般不编码 特点&#xff1a; 使用%后跟两个十六进制数字表示字符 空格编码为或%20 保留字符&#xff08;; / ? : & …

【HarmonyOS】元服务概念详解

【HarmonyOS】元服务概念详解 最近几年&#xff0c;我们手里的设备越来越多——手机、平板、手表、车机……光是管理这些设备上的APP就够头疼了&#xff1a;下载要流量、安装占内存、换个设备又得重新弄一遍。有没有更简单的方式&#xff1f;HarmonyOS推出的“元服务”&#xf…

vscode/cursor怎么自定义文字、行高、颜色

JetBrains Mono: A free and open source typeface for developers | JetBrains: Developer Tools for Professionals and Teams 首先下载上面的文字&#xff0c;然后右键全选&#xff0c;安装 然后重启cursor 下载插件Apc Customize UI 点击设置 把下面的代码复制进去&…

JavaScript 与 C语言基础知识差别

一&#xff0c; 变量声明对比 C语言&#xff1a; int age 20; // 必须指定类型 float price 9.99; char grade A; const double PI 3.14; // 常量JavaScript&#xff1a; let age 20; // 数字 var price 9.99; // 现在不用&#xff0c;有缺点 co…

无缝矩阵支持音频分离带画面分割功能的全面解析

一、技术原理与实现方式1. 音频分离技术核心功能&#xff1a;HDMI无缝矩阵通过硬件或软件实现音频加嵌与分离功能&#xff0c;支持多设备音频的独立处理与增强。实现方式&#xff1a;音频加嵌&#xff1a;将外部音频信号&#xff08;如麦克风、调音台&#xff09;嵌入HDMI信号中…

AI创作系列第18篇:海狸IM移动端UI统一大升级 - 从混乱到规范的技术重构之路

AI创作系列第18篇&#xff1a;海狸IM移动端UI统一大升级 - 从混乱到规范的技术重构之路本文是海狸IM AI创作系列的第18篇文章&#xff0c;记录7月11日-13日周末期间对移动端的UI统一升级工作。这次重构不是功能性的&#xff0c;而是架构性的 - 我们重新设计了整个UI架构&#x…

八、nginx搭建,实现vue跳转nginx跳转gateway

基本的调用链路: vue调用nginx,nginx反向代理gateway,gateway看用户是否登录,没有登录的话,就创建验证码并先输入密码后获取token。 截止现在我们创建了两个项目能够通过feign调用,并且创建好了gateway,且能调用对应的项目。 这一章节,我们搭建好nginx,通过反向代理,…

C++ 中常见的字符串定义方式及其用法

引言 最近在学习C&#xff0c;下面将从基础到进阶的顺序&#xff0c;列出一些 C 中常见的字符串定义方式及其用法&#xff0c;包含完整代码和详细注释&#xff0c;加深对代码的理解。 C 风格字符串&#xff08;char*或 char[]&#xff09; 定义方式 #include <iostream>i…

下一代防火墙-防范DOS攻击、IPS防护、web防护实验

一、实验拓扑二、实验设备1.山石网科系列下一代防火墙2.三层交换机一台3.windows两台4.各种工具&#xff0c;如hyenae、小旋风服务器、永恒之蓝等等三、实验目的1.掌握网络攻击防护策略配置2.通过下一代防火墙来防护服务器免受DOS攻击四、防范Dos攻击实验1.将一台windows配置为…

【人工智能】通过 Dify 构建智能助手

通过 Dify 构建智能助手1.定义2.如何使用智能助手3.添加助手需要的工具4.配置 Agent5.配置对话开场白6.添加文件上传7.调试与预览8.应用发布1.定义 智能助手&#xff08;Agent Assistant&#xff09;&#xff0c;利用大语言模型的推理能力&#xff0c;能够自主对复杂的人类任务…

破局与重构:文心大模型开源的产业变革密码

——从技术垄断到生态共享的战略转型深度解析 引言&#xff1a;一场静悄悄的革命 2024年&#xff0c;当百度宣布文心大模型4.5系列全面开源时&#xff0c;这不仅仅是一次技术发布&#xff0c;更是一场关于AI产业未来走向的战略博弈。在全球AI竞争白热化的当下&#xff0c;开源意…

7.15 窗口函数 | 二分 | 位运算

05.071.位运算2.位图class Solution { public:int exchangeBits(int num) {bitset<33> bitNum(num);for (int i 0; i < 16; i){bitNum[32] bitNum[2*i];bitNum[2*i] bitNum[2*i1];bitNum[2*i1] bitNum[32];}return (int)bitNum.to_ulong();} };577.员工奖金select…

Windows 安装配置Claude Code

文章目录1.安装node.js2.安装 Claude Code3.测试claude1.安装node.js https://nodejs.org/en/download/ 一路回车即可顺利安装完成。 再键盘按下Win R快捷键&#xff0c;输入cmd&#xff0c;然后回车启动命令行窗口。分别输入node -v和npm -v来查看node.js版本和npm版本。 环…

C++动态数组vector

一、为什么要用vector而不是数组 虽有嘉肴&#xff0c;弗食&#xff0c;不知其旨也。______,____,____________。 简单来说就是节约内存&#xff0c;不容易RE 二、如何使用vector 既谓之数组&#xff0c;则用之如数组 1.定义 vector<数据类型>名称 vector<int …

14.使用GoogleNet/Inception网络进行Fashion-Mnist分类

14.1 GoogleNet网络结构设计import torch from torch import nn from torch.nn import functional as F from torchsummary import summary class Inception(nn.Module):def __init__(self, in_channels,c1,c2,c3,c4,**kwargs):super(Inception,self).__init__(**kwargs)#第一条…

NE综合实验2:RIP 与 OSPF 动态路由精细配置、FTPTELNET 服务搭建及精准访问限制

NE综合实验2&#xff1a;RIP 与 OSPF 动态路由精细配置、FTPTELNET 服务搭建及精准访问限制 涉及的协议可以看我之前的文章&#xff1a; RIP实验 OSPF协议&#xff1a;核心概念与配置要点解析 ACL协议&#xff1a;核心概念与配置要点解析 基于OSPF动态路由与ACL访问控制的网…