- 博客(88)
- 收藏
- 关注
原创 书籍子矩阵的最大累加和问题(8)0724
可以把两列的元素累加,然后得到累加数组[-1,7,-6,4],接下来求这个累加数组的最大累加和,结果是7。这个矩阵的累加数组就是在上一步累加数组[64,-40,64]的基础上,依次在每个位置上加上矩阵最新一行[-81,-7,66]的结果,即[-17,-47,130],这个数组的最大累加和为130。这个矩阵的累加数组就是在上一步的累加数组[-90,48,78]的基础上,依次在每个位置上加上矩阵最新一行[64,-40,64]的结果,即[-26,8,142],这个数组的最大累加和为150。
2025-07-24 09:28:53
258
原创 子数组的最大累加和问题(8)0718
遍历到-2,cur=cur-2=-1,开始出现负的累加和,所以说明[1,-2]这一部分肯定不会作为产生最大累加和的子数组的左边部分,于是令cur=0,max不变。遍历到-2,cur=cur-2=-6,虽然累加了一个负数,但是cur依然大于0,说明累加的这一部分(也就是[3,5,-2])仍可能作为最大累加和子数组的左边部分。遍历到-1,cur=cur-1=11,max不更新。例如,arr=[1,-2,3,5,-2,6,-1],所有的子数组中,[3,5,-2,6]可以累加出最大的和12,所以返回12.
2025-07-18 09:09:59
144
原创 书籍奇数下标都是奇数或者偶数下标都是偶数(8)0717
此时end=6为偶数,所以6和arr[even = 0]交换,数组变成[6,8,3,2,4,1],even=even+2=2。此时end=1为奇数,所以1和arr[odd=1]交换,数组变成[6,1,3,2,4,8],odd=odd+2=3。此时end=8为偶数,所以8和arr[even=2]交换,数组变成[6,1,8,2,4,3],even=even+2=4。此时end=2为偶数,所以2和arr[odd=4]交换,数组变成[6,1,8,3,2,4],even = even + 2 = 6。
2025-07-17 09:10:39
292
原创 书籍自然数数组的排序(8)0715
举例说明,比如[1,2,5,3,4],假设遍历到位置2,也就是5这个数。5应该放在位置4上,所以把5放过去,数组变成[1,2,5,3,5]。同时,4这个数是被5替下来的数,应该放在位置3,所以把4放过去,数组变成[1,2,5,4,5]。同时3这个数是被4替下来的数,应该放在位置2,所以把3放过去,数组变成[1,2,3,4,5]。给定一个长度为N的整型数组arr,其中有N个互不相等的自然数1~N,请实现arr的排序,但是不要把下标0~N-1位置上的数通过直接赋值的方式替换成1~N。3、如果arr[i]!
2025-07-15 09:52:32
159
原创 书籍计算数组的小和(8)0714
例如,数组arr=[1,3,5,2,4,6],在s[0]的左边小于或等于s[0]的数的和为0,在s[1]的左边小于或等于s[1]的数的和为1,在s[2]的左边小于或等于s[2]的数的和为1+3=4,在s[3]的左边小于或等于s[3]的数的和为1,在s[4]的左边小于或等于s[4]的数和为1+3+2=6,在s[5]的左边小于或等于s[5]的数的和为1+3+5+2+4=15,所以s的小和为0+1+4+1+6+15=27。3、[1,3]与[5]合并。同理,3和5比较,产生小和为3*1=3,合并为[1,3,5]。
2025-07-10 09:32:53
308
原创 书籍未排序数组中累加和小于或等于给定值的最长子数组长度
5、j=3时,sum[0..3]=-3,所以在helpArr中二分查找大于或等于-3-k=3-(-2)=-1这个值第一次出现的位置,在helpArr中位置是0,对应的arr中的位置是-1,表示一个数都不累加的情况,所以arr[0..3]是满足条件的最长数组。1、arr=[3,-2,-4,0,6],求得arr的累加数组sumArr=[0,3,1,-3,-3,3],进一步求得sumArr的左侧最大值数组[0,3,3,3,3,3]。在这样一个有序的数组中,就可以二分查找大于或等于某一个值的累加和最早出现的位置。
2025-07-09 09:15:53
353
原创 书籍未排序数组中累加和为给定值的最长子数组系列问题(8)0704
根据之前得出的结论,arr[j+1..i]的累加和为s(i)-s(j),此时s(i)=sum,又有s(j)=sum,又有s(j)=sum-k,所以arr[j+1..i]的累加和为k。那么字数组arr[j..i](0<=j<=i<arr.length)的累加和为s(i) - s(j-1),因为根据定义,s(i) = arr[0..i]的累加和=arr[0..j-1]的累加和+arr[j..i]的累加和,又有arr[0..j-1]的累加和为s(j-1)。比如,数组[1,2,3,3],k=6。
2025-07-04 10:11:30
385
原创 书籍未排序正数数组中累加和为给定值的最长子数组长度(8)0703
如果sum==k,说明arr[left..right]累加和为k,如果arr[left..right]长度大于len,则更新len,此时因为数组中所有的值都为正数,那么所有从left位置开始,在right之后的位置结束的子数组,即arr[left..i(i>right)],累加和一定大于k。所以,令left加1,这表示我们开始考查以left之后的位置开始的子数组,同时令sum-=arr[left],sum此时表示arr[left + 1 .. right]的累加和。需要注意的是,right加1后是否越界。
2025-07-03 09:22:10
176
原创 书籍不重复打印排序数组中相加和为给定值的所有二元组和三元组
只需要在打印时增加一个检查即可,检查arr[left]是否与它前一个值arr[left-1]相等,如果相等就不打印。具体解释为:因为整体过程是从两头向中间压缩的过程,如果arr[left] + arr[right] == k,又有arr[left] == arr[left -1],那么之前一定已经打印过这个二元组,此时无须重复打印。比如arr=[1,1,1,9],k=10。如果sum等于k,打印"arr[left],arr[right]",则left++,right++。如果sum小于k,left++。
2025-07-01 08:56:07
162
原创 书籍最长的可整合子数组的长度(8)0627
比如[3,2,5,6,4],max-min+1 = 6 -2 +1=5==元素个数,所以这个数组是可整合数组。例如,[5,3,4,6,2]排序之后为[2,3,4,5,6],符合每相邻两个数差的绝对值都为1,所以这个数组为可整合数组。需要注意的是,在考查每一个arr[i..j]是否符合可整合数组定义的时候,都得把arr[i..j]单独复制成一个新的数组,然后把这个新的数组排序、验证,而不能直接改变arr中元素的顺序。例如,[5,5,3,2,6,4,3]的最大可整合子数组为[5,3,2,6,4],所以返回5。
2025-06-27 09:45:56
162
原创 书籍在行列都排好序的矩阵中找数(8)0626
如果比K小,因为矩阵每一行都已排好序,所以在当前数所在的行中,处于当前数左方的数都会比K小,则没有必要继续在第row行上寻找,令row = row + 1,重复步骤2。如果比K大,因为矩阵每一列都已排好序,所以在当前数所在的列中,处于当前数下方的数都会比K大,则没有必要继续在第col列上寻找,令col=col-1,重复步骤2.给定一个有N*M的整型矩阵matrix和一个整数K,matrix的每一行和每一列都是排好序的。实现一个函数,判断K是否在matrix中。如果与K相等,说明已找到,直接返回true。
2025-06-26 09:11:01
235
原创 书籍在数组中找到出现次数大于N/K的数(8)0617
具体的过程为,一次在数组中删掉两个不同的数,不停地删除,知道剩下的数只有一种,如果一个数出现次数大于一半,这个数最后一定会剩下来。综上所述,第一个for循环的实质就是我们的核心解题思路,一次在数组中删掉两个不同的数,不停地删除,知道剩下的数只有一种,如果一个数出现次数大于一半,则这个数最后一定被剩下来,也就是最后的cand值。方法的核心思想,一次在数组中删掉K个不同的数,不停地删除,直到剩下数的种类不足K就停止删除,那么,如果一个数在数组中出现了次数大于N/K,则这个数最后一定会被生下来。
2025-06-17 09:43:08
308
原创 书籍需要排序的最短子数组长度(8)0616
假设当前数位arr[i],如果arr[i] > min,说明如果要整体有序,min值必然会挪到arr[i]的左边。如果遍历完成后,noMinIndex依然等于-1,说明从右到左始终不升序,原数组本来就有序,直接返回0,即完全不需要排序。接下来从左向右遍历,遍历的过程中记录左侧出现过的数的最大值,记为max。假设当前数位arr[i],如果arr[i] < max,说明如果排序,max值必然会挪到arr[i]的右边。例如:arr=[1,5,3,4,2,6,7]返回4,因为只有[5,3,4,2]需要排序。
2025-06-16 09:14:00
132
原创 书籍找到无序数组中最小的k个数(8)0611
如果数组arr的长度为N,排序之后自然可以得到最小的k个数,此时间复杂度与排序时间复杂度相同,均为O(NlogN)。本题要求实现时间复杂度为O(Nlogk)和O(N)的方法。O(Nlogk)的方法,就是一直维护一个有k个数的大根堆,这个堆代表目前选出的k个最小的数,在堆里的k个元素中堆顶的元素是最小的k个数里最大的那个。在遍历完成后,堆中的k个数就是所有数组中最小的k个数。大根堆:根节点的关键字是堆里所有节点关键字中最大者,属于二叉堆的两种形式之一。的关键字值,又大于或等于右子树的关键字值。
2025-06-12 09:23:01
197
原创 书籍“之“字形打印矩阵(8)0609
1.上坐标(tR,tC)初始为(0,0),先沿着矩阵第一行移动(tC++),当到达第一行最右边的元素后,再沿着矩阵最后一列移动(tR++)。2.下坐标(dR,dC)初始为(0,0),先沿着矩阵第一列移动(dR++),当到达第一列最下边的元素时,再沿着矩阵最后一行移动(dC++)。3.上坐标与下坐标同步移动,每次移动后的上坐标与下坐标的连线就是矩阵中的一条斜线,打印斜线上的元素即可。”之“字形打印的结果为:1,2,5,9,6,3,4,7,10,11,8,12。
2025-06-09 09:25:18
359
原创 书籍将正方形矩阵顺时针转动90°(8)0605
在这个外围圈中,1,4,16,13为一组,然后让1占据4的位置,4占据16的位置,16占据13的位置,13占据1的位置,一组就调整完了。然后2,8,15,9一组,继续占据调整的过程,最后3,12,14,5为一组,继续占据调整的过程。然后(tR,tC)=(0,0)、(dR,dC)=(3,3)的子矩阵外层就调整完毕。比如,题目中的矩阵,当(tR,tC)=(0,0)、(dR,dC)=(3,3)时,表示的子矩阵就是整个矩阵,那么这个子矩阵最外层的部分如下。额外空间复杂度为O(1)。
2025-06-05 09:56:25
559
原创 书籍转圈打印矩阵(8)0604
如果能把这个子矩阵的外层转圈打印出来,那么在(tR,tC)=(0,0)、(dR,dC)=(3,3)时,打印的结果为:1,2,3,4,8,12,16,15,14,13,9,5。再把这个子矩阵转圈打印出来,结果为:6,7,11,10。把tR和tC加1,即(tR,tC)=(2,2),令dR和dC减1,即(dR,dC)=(1,1)。打印结果为:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。给定一个整型矩阵matrix,请按照转圈的方式打印它。额外空间复杂度为O(1)
2025-06-04 09:40:16
323
原创 书籍在其他数都出现k次的数组中找到只出现一次的数(7)0603
首先设置一个变量eO,它是一个32位的k进制数,且每个位置上都是0。然后遍历arr,把遍历到的每一个整数都转换为k进制数,然后与eO进行无进位相加。因为k个相同的k进制数无进位相加,结果一定是每一位上都是0的k进制数,所以只出现一次的那个数最终就会剩下来。k进制的两个数c和d,在i位上无进位相加的结果就是(c(i) + d(i) )% k。那么,如果k个相同的k进制进行无进位相加,相加的结果一定是没一位上都是0的k进制数。已知arr中只有1个数出现了1次,其他的数都出现了k次,请返回只出现了1次的数。
2025-06-03 14:39:56
225
原创 书籍在其他数都出现偶数次的数组中找到出现奇数次的数(7)0530
所以,如果数组中有两个出现了奇数次的数,最终的eO一定不等一0。在这次遍历时,eOhasOne只与第k位上是1的整数异或,其他的数忽略。那么在第二次遍历结束后,eOhasOne就是a或者b中的一个,而eO^eOhasOne就是另一个出现奇数次的数。整数n与0异或的结果是n,整数n与整数n异或的结果是0。在遍历数组的过程中,把eO和每个数异或(eO=eO^当前数),最后eO的值就是出现了奇数次数的那个数。给定一个整型数组arr,其中只有一个数出现了奇数次,其他的数都出现了偶数次,打印这个数。
2025-05-30 09:09:28
235
原创 书籍整数的二进制表达中有多少个1(7)0529
在同时进行的前提下,可以将计算的过程分解成小部分,之后以并发方式来加以解决,或指用多台处理机联合求解问题的方法和步骤,其执行过程是将给定的问题首先分解成若干个尽量相互独立的子问 题,然后使用多台计算机同时求解它,从而最终求得原问题的解。平行算法,将32位分别分成5组,分别为2为一组(一个0,一个1),4位一组(2个0,2个1),8位一组(4个0,4个1)……给定一个32位整数n,可为0,可为正,可为负,返回该整数二进制表达中1的个数。上面的方法需要循环32次,下面看循环次数只与1的个数有关的解法。
2025-05-29 09:34:36
188
原创 书籍只用位运算不用算术运算实现整数的加减乘除运算(7)0528
如果不再考虑进位的情况下,a^b就是正确结果,因为0加0位0(0&0),0加1为1(0&1),1加0为1(1&0),1加1为0(1&1)实现a-b只要实现a+(-b)即可,根据二进制数在机器中的表达规则,得到一个数的相反数,就是这个数的二进制数表达取反加1(补码)的结果。在只算进位的情况下,也就是只考虑a和b的过程中进位产生的值是什么,结果就是(a&b)<<1,因为在第i位上只有1与1相加才会产生i+1位的进位。5、计算(a-(c*b)/b)的结果,记为rest,意义是修正值,即-5/5=-1。
2025-05-28 10:02:32
256
原创 书籍不用任何比较判断找出两个数中较大的数
sign函数的功能是返回整数n的符号,正数和0返回1,负数则返回0。flip函数的功能是如果n为1,返回0,如果n为0,返回1。所以,如果a-b的结果为0或正数,那么scA为1,scB为0;如果a-b的值为负数,那么scA为0,scB为1。,就是根据a-b的值的状况,选择要么返回a,要么返回b。符号右移(>>):二进制向右移,保留符号位,高位补符号位(整数补0,负数补1),相当与除以2的n次方。但方法是有局限性的,那就是如果a-b的值出现溢出,返回结果就不正确。异或运算(^):相同为0,不同为1。
2025-05-26 09:40:55
151
原创 书籍一致性哈希算法的基本原理
首先把该数据的id用哈希函数算出哈希值,并射到环中的相应位置,然后顺时针找寻离这个位置最近的机器,那么机器就是该数据的归属。题目中描述的缓存策略的潜在问题是如果增加或删除机器时(N变化)代价会很高,所有的数据都不得不根据id重新计算一遍哈希值,并将哈希值对新的机器数进行取模操作,然后进行大规模的数据迁移。2、如果目前机器有N台,则计算key%N的值,这个值就是该数据所属的机器编号,无论是添加、删除还是查询操作,都只在这台机器上进行。工程师常使用服务器集群来设计和实现数据缓存,以下是常见的策略。
2025-05-21 10:31:49
176
原创 书籍40亿非负整数中找到出现两次的数和所有数的中位数
怎么使用这个bitArr数组呢?遍历这40亿个无符号数,如果初次遇到num,就把bitArr[num*2 + 1]和bitArr[num*2]设置为01,如果第二次遇到num,就把bitArr[num*2 + 1]和bitArr[num*2]设置为10,如果第三次遇到num,就把bitArr[num*2 + 1]和bitArr[num*2]设置为11。遍历完成后,再次遍历bitArr,如果发现bitArr[i*2 + 1]和bitArr[i*2]设置为10,那么i就是出现了两次的数。
2025-05-19 16:15:19
215
原创 书籍布隆过滤器优点说明
哈希函数的输入域可以是非常大的范围,比如,任意一个字符串,但是输出域是固定的范围。布隆过滤器的优势就在于使用很少的空间就可以将准确率做到很高的程度。
2025-04-30 15:37:18
121
原创 字典树(前缀树)的实现(5)0423
先调用search(word),看word再不在Trie树中,若在,则执行后面的过程,若不在,则直接返回,从左到右遍历word中的每个字符,并依次从头节点开始根据每一个word[i]找到下一个的节点,在找的过程中,把扫过每一个节点的path值减1。4、一直向下搜索,如果单词搜索完后,找到的最后一个节点是一个终止节点,说明字典树中含有这个单词,如果找到的最后一个节点不是一个终止节点,说明单词不是字典树中添加过的单词。和查找操作同理,根据pre不断找到节点,假设最后的节点记为e,返回e.path的值即可。
2025-04-23 15:31:01
471
原创 书籍字符串匹配问题(5)0409
如果exp[i..elen-1]="A*B*",也能匹配""。所以如果把递归函数p在所有不通参数(si和ei)的情况下的所有返回值看作一个范围,这个范围就是一个(slen+1)*(elen+1)的二维数组,并且p(si,ei)代表p(i,j)的返回值,dp[i][j]就是只依赖dp(si+1,ei+1)或者p(si+k(k>=0),ei+2),假设二维数组dp[i][j]代表p(i,j)的返回值,dp[i][j]就只是依赖dp[i+1][j+1]或者dp[i+k(k>0)][j+2]的值。
2025-04-10 15:53:15
535
原创 书籍回文最少分割数(5)0402
1、假设J位置处在i与len-1位置之间(i<=j<len),如果str[i...j]是回文串,那么dp[i]的值可能是dp[j+1]+1,其含义是在str[i...len-1]上,既然str[i..j]是一个回文串,那么它可以自己作为一个分割的部分,剩下的部分(即str[j+1..len-1])继续做最经济的切割,而dp[j+1]值的含义正好是str[j+1...len-1]的最少回文分割数。所以对dp[i][j]来说,p[i+1][j-1]值一定已经计算过,这就使判断一个子串是否变得极为方便。
2025-04-02 16:19:02
210
原创 书籍最小包含子串的长度(5)0328
3、接下来是遍历过程,这个遍历过程right先进行右移动,当不在欠str2的时候,right停止,记录下标,在遍历的过程中,所有的字符都需要加入到map中。3)match:表示对所有的字符来说,str[left...right]目前一共欠str2多少个,对本例来说,初始时,match=3,即开始时欠1个'a',1个'c'和1个'b'。1)left:遍历str1的过程中,str[left...right]表示被框住的子串,所以left表示这个子串的左边界,初始时,left=0;最小包含子串不存在,返回0。
2025-03-28 09:39:31
214
原创 书籍找到被指得新类型字符(5)0327
如果uNum为奇数,str[k-1...k]是被指中的新类型字符,见例子1.如果uNum为偶数且str[k]是大写字母,str[k...k+1]是被指中的新类型字符,见例子2。如果uNum为偶数且str[k]是小写字母,str[k]是被指中的新类型字符,见例子3。然后发现str[7]是大写字母'E',所以被指中的新类型字符一定是"EC",返回即可。现在给定一个字符串str,str一定是若干新类型字符正确组合的结果,比如“eaCCBi”,由新类型字符“e”、“a”、“CC”和“Bi”拼成。
2025-03-27 10:58:28
239
原创 书籍找到字符串的最长无重复字符子串(5)0326
所以以str[i]结尾的最长无重复子串向左扩到pre位置也必然会停止,而且str[pre+1..i-1]这一段上肯定不含有str[i],所以以str[i]结尾的最长无重复字符子串就是str[pre+1..i]。想要求以str[i]结尾的最长无重复子串,a位置必然不能包含进来,因为str[a]等于str[i]。3、根据pre的定义,pre+1表示在必须以str[i-1]字符结尾的情况下,最长无重复字符子串的开始位置,也就是说,以str[i-1]结尾的最长无重复子串是向左扩到pre位置停止的。
2025-03-26 10:14:28
304
原创 书籍拼接所有字符串中产生字典顺序最小的大写字符串(5)0325
假设有两个字符串,分别记为a和b,a和b拼起来的字符串表示魏a.b。那么如果a.b的字典顺序小于b.a,就把字符串a放在前面,否则把字符串b放在前面,每两个字符串之间都按照着个标准进行比较,以此标准排序后,再依次串起来的大写字符串就是结果。这是具有传递性的,这里面不进行证明了,有传递性之后,还要证明通过这种比较方式排序后,如果交换任意两个字符串的位置所得到的总字符串,将拥有更大的字段顺序。strs=["b","ba"],可以拼成"bba",也可以拼成"bab",但后者的字段顺序更小,所以返回"bab"。
2025-03-25 10:09:18
164
原创 书籍0左边必有1的二进制字符串数量(5)0324
只由”0“与”1“组成,长度为3的所有字符串为:“000”,“001”,“010”,“011”,“100”,“101”,“110”,“111”。只由”0“与”1“组成,长度为2的所有字符串为:”00“,”01“,”10“,”11“。给定一个整数N,求由“0”字符与“1”字符组成的长度为N的所有字符串中,满足“0”字符的左边必有“1”字符的字符串数量。只由“0”与“1”组成,长度为1的所有字符串:"0"、”1“。i < N - 1 时,p(i) = p(i+1)+p(i+2)
2025-03-24 10:49:57
131
原创 书籍公式字符串求值20250320
比如"3*(4+5)+7",一开始遍历就进入递归过程value(str,0),在递归过程中value(str,0)中继续遍历str,当遇到字符'('时,递归过程value(str,0)又重复调用递归过程value(str,3)。既然在递归过程中遇到'('就交给下一层的递归过程处理,自己只用接收'('和')'之间的公式字符子串的结果,所以对所有的递归过程来说,可以看作计算的公式都是不含有'('和')'字符的。所以,只要想清楚如何计算一个不含有'('和')'的公式字符串,整个实现就完成了。
2025-03-20 10:24:15
305
原创 书籍括号字符串的有效性和最长有效长度(5)0317
比如,"()(())",假设遍历到最后一个字符')',通过上面的过程找到的必须以最后字符结尾的最长有效括号子串起码是"(())",但是前面还有一段"()",可以和"(())"结合在一起构成更大的有效括号子串。也就是说,str[i-dp[i-1]-1]和str[i]配成了一对,这时还应该把dp[i-dp[i-1]-2]的值加到dp[i]中,这么做表示把str[i-dp[i-1]-2]结尾的最长有效括号子串接到前面,才能得到以当前字符结尾的最长有效括号子串接到前面,才能得到以当前字符结尾得最长有效括号子串。
2025-03-14 09:49:25
332
原创 Springboot启动加载的一句话总结
首先,我们SpringBoot肯定会执行Main方法中的run方法,因为run方法会去进行IOC的初始化操作,那么我们的SpringBoot显然不会进行配置文件的初始化,而是注解初始化,接下来,就会把java配置类的对象传递进去,我们就会走到SpringBootApplication注解,那么接下来,起作用就是我们的@EnaleAutoConfiguration注解,这个注解会去加载Spring.factories以及spring-autoconfiguration-metadata.properites文
2025-03-13 14:09:57
263
1
原创 书籍添加最少字符使字符串整体都是回文字符串(5)0317
3、如果字符串str[i...j]多于两个字符,如果str[i]==str[j],那么dp[i][j] = dp[i+1][j-1].比如,如果str[i...j]为“A124521A”,str[i...j]需要添加的字符数与str[i+1...j-1](即“124521”)需要添加的字符数是相等的,因为只要能把“124521”整体变成回文串,然后再左右两头加上字符‘A’,就是str[i...j]整体变为回文串的结果。str="ABA".str本身就是回文串,不需要添加字符,所以返回"ABA".
2025-03-11 11:08:34
258
原创 AI大模型的基本流程
这篇文章主要是记录自己的问题,虽然说AI大数据模型已经出现了很久,但是一直找不到它与企业的关系,因为有ghat gpt,只要应用这个人工智能就可以了,所以思想一直没有转变过来。1、各个企业需要建立自己的AI模型,这个AI模型的建立是基于大语言模型(基础模型GHAT GPT Qianwen ollama等)。大模型也就是基础模型,但是这个模型不会回答自己企业的问题,因为这个模型在训练的时候,没有相关企业的数据信息。再构建企业AI的时候,主要的工作就是模型的微调,新模型的训练,主要是利用微调算法进行模型微调。
2024-09-29 10:03:17
457
原创 书籍数组中两个字符串的最小距离(5)0924
last2的值就是当前的str1和左边最它近的str2之间的距离。给定一个字符串数组strs,再给定两个字符串str1和str2,返回再strs中str1与str2的最小距离,如果str1和str2为null,或不在strs中,返回-1。从左到右遍历strs,用变量last1记录最近一次出现的str1的位置,用变量last2记录最近一次出现的str2的位置,如果遍历到str1,那么i。strs = ["1","3","3","3","2","3","1"] ,str1=“1”,str2=“2”,返回2。
2024-09-24 10:41:53
302
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人