自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 收藏
  • 关注

原创 力扣题解(摆动序列)

找极值点做法:左右增减性质不一样的点就是极值点,因此对于下标为i的点,若num[i]-num[i-1]和num[i+1]-num[i]异号,则i是极值点。但是存在一些特殊情况,即有些点可能相等,导致如num[i]-num[i-1]==0的情况。对于这种情况,比较好的解决办法是设置一个left变量,用于记录i左边的上升下降趋势,当num[i]-num[i-1]!=0时正常记录,等于零则不变,每次和右侧的变化趋势进行比对即可。每次选择数组中的极大值点和极小值点,再加上左右端点构成摆动序列最长子序列。

2024-07-24 16:52:38 281

原创 力扣题解(最大数)

因此按照上述做法得出的序列是x1,x2,x3.....,最优解是y1,y2,y3.....,假设前i-1个一样,则xi!=yi,假设xi==yj,则必有yiyj<yjyi,且对于处于i到j之间的数字组合z,yizyj<yjzyi,因此换i,j位置会大于等于未换位置的最优解,但是最优解是最大值,因此换后仍是最大值。正确性:若ab>ba,则acb>bca,保证了将任何数放ab之间,不改变大小关系。排序规则:对于数组中的数a和数b,若ab>ba,则a在前,b在后。对数组重新排列,使得按照题目所要求的顺序输出。

2024-07-24 16:45:09 270

原创 力扣题解(将数组和减半的最小操作次数)

若y没有出现在最优解中,则把最优解的x替换成y,最优解中后续分解的x/2,x/4...通通变成y/2,y/4....,则此时一定还是在最优解次数内实现数组和减小到一半(就是每次减的都更多了,那一定是能更快或同一次数减小到一半,但是最优解就是最小次数,因此当前只能是一样的次数)。若y出现在最优解后续步骤中,则互换最优解中x,y的位置,并且对有x到y步骤之间出现的x/2,x/4....,将y、x互换后的,x取代x/2位置,x/2取代x/4位置。每次找当前数组中最大的数分成一半,再把这一半放回数组中。

2024-07-23 17:05:57 205

原创 贪心算法粗略了解+力扣题解(柠檬水找零)

首先根据上述思路,客人给5,10元的返还做法是固定的,因此只能是顾客给20元。则此时贪心是10+5,最优应该是5+5+5.那么,对于贪心返还的10元,若是没有出现在最优解所有步骤中,则可以将第i个客人给的5+5+5换成10+5,且不会对最优解后续有任何影响。=yi,证明可以通过对后续步骤的交换来使得xi=交换后的yi)。顾客给10元,则返还5元,顾客给20元,有10元则给10+5,没有10元则给5+5+5.则用一个数组保存当前有的5,10,20元的数目,当按照上述可以返还钱则继续进行,不能返还钱则失败。

2024-07-23 16:57:30 341

原创 力扣题解(不同的二叉搜索树)

dp[i]的组成是对于j属于1到i,所有dp[j-1]*dp[i-j]的和,可以看成是i个节点就是1到i所有的数,取一个数j为中间,然会分成左右子树两部分,左边的个数是j-1个,右边个数是i-j个,那就是dp[j-1]*dp[i-j]啦。需要注意的是,存在某一侧没有节点,即可能有左子树或者右子树是空树的情况,此时就是dp[0],因为是用的乘法,所以dp[0]=1,认为空树就一种组合方法。首先明确二叉搜索树的概念,这和本题息息相关,如果不是二叉搜索树而是别的树,做法可能就会不一样了。个节点组成且节点值从。

2024-07-22 14:58:22 201

原创 力扣题解(组合总和IV)

这里不太好说明,就比如假如有数字1,2,3,第一次会有三个式子1=1,2=2,3=3.然后第二次大循环会有1+1=2,1+2=3,1+3=4,2+1=3,2+2=4,2+3=5,3+1=4,3+2=5,3+3=6,可以很明显看出除了最后一个元素外的前面那一串式子就是上一次外层循环得到的所有式子。(对于可以视为在和是i-nums[i]的所有排列方法后面加一个nums[i],注意我的说法,是在所有组合的后面,是后面而不是任意位置,这一点接下来会用到!

2024-07-22 14:48:25 668

原创 力扣题解(盈利计划)

dp[i][j][k]=dp[i-1][j][k]+dp[i-1][j-p[i]][k-g[i]],此处要求k-g[i]必须大于等于0,因为不可能存在人数小于一个负数的情况,但j-p[i]可以小于等于0,因此存在利润大于一个负数的情况,注意,这是因此此处dp的设计含义导致的。此处dp[i][][]之和dp[i-1][][]有关,因此可以化成二维,主要这样的话j,k要从大到小遍历。本题由于题目要求的是利润不小于minprofit的所有计划数目,因此dp设计上有所特别。有多少种计划可以选择?

2024-07-21 15:47:01 387

原创 力扣题解(一和零)

则dp[i][j][k]=max(dp[i-1][j][k] ,dp[i-1][j-z[i][k-o[i]]+1),其中z[i]表示第i个子序列中0的个数,o[i]表示第i个子序列中1的个数。优化:可以把dp从三维换成二维,因为此处dp[i][][]只和dp[i-1][][]有关,因此可以将第一维去掉,但需要注意此时必须让j,k从大到小变化,这样才能保证dp[j][k]是上一个i所对应的dp。j,k均为0的时候,无论i取什么值都存在且仅存在一个不取的情况下让j,k均为0,因此dp[i][0][0]=1.

2024-07-21 15:36:57 265

原创 力扣题解(完全平方数)

可以看成在所有满足(k*k<=n,k>=1)的所有k所组成的数组中取某些数,可以多次取同一个数,然后和为n的最小组合数,因此和零钱兑换问题实质上一样。是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。j为0,对任意i,都有零个数字组成j的可能,因此dp[i][0]=0;i为0,j除了为0均不可能实现,因此设为一个很大的数。dp[i][j]表示前i个数,和为j的最小数量。的完全平方数的最少数量。

2024-07-20 12:16:14 374

原创 力扣题解(零钱兑换II)

(此处用+的原因是要求的是所有可能的组合数)当j为0的时候,对i任意取值,都存在一个数都不取结果为0的情况,因此dp[i][0]为1.请你计算并返回可以凑成总金额的硬币组合数。对一堆数字中选取某几个,且每个数字可以重复出现,因此是完全背包问题。i为0的时候,仅有j同样为0才有可能有组合数,因此其余均为0.dp[i][j]表示前i个字符组合是j的所有组合数。表示不同面额的硬币,另给一个整数。假设每一种面额的硬币有无限个。

2024-07-20 12:11:50 307 1

原创 力扣题解(零钱兑换)

而i为0时,除了j为0的情况,其余情况均不可能实现,因此可以初始化为一个很大的数,因为dp[i][j]求得是最小值,因此作为一个很大的数,一定不会是dp[i][j]的构成,即隐含了将不存在的情况排除在外的判断那一步。dp[i][j]=min(dp[i-1][j],dp[i][j-coins[i]]),此处dp[i-1][j]表示不要第i个数,dp[i][j-coins[i]]表示至少要一个第i个数,因此二者会把所有可能包含在内。dp[i][j]表示前i个物品,结果是j所需的最小银币个数。

2024-07-20 12:07:54 232

原创 完全背包问题

DP42 【模板】完全背包。

2024-07-17 16:34:52 255

原创 力扣题解(最后一块石头的重量)

注意:本题是存在前面全部是减去一个数的情况,因此j从逻辑上来说可能是负的,但数组的下标只能从0开始,因此需要将逻辑上的(-sum,+sum)转移到实际数组下标(0,2*sum)。j从sum开始,此时dp[n][sum]表示的是加合为0的数目,若为非空则结果是0,不是则j++,一直找到一个sum+k,使得dp[n][sum+k]为非零,则表示和为k是存在的,然后返回k。dp[i][j]表示前i个物品,结果恰好是j的所有可能数目。dp[i-1][j+num[i]],表示减去第i个元素。,然后将它们一起粉碎。

2024-07-17 16:24:03 314

原创 力扣题解(目标和)

target可能存在过大或者过小的情况,因为最后要返回的是dp[n][target+sum],但数组实际j取值范围是(0,2*sum),则若target<-sum或者target>sum,此时数组越界,因此需要单独讨论,但针对这两种情况,一定是取不到的,因此直接返回0就行。注意:本题是存在前面全部是减去一个数的情况,因此j从逻辑上来说可能是负的,但数组的下标只能从0开始,因此需要将逻辑上的(-sum,+sum)转移到实际数组下标(0,2*sum)。dp[i-1][j+num[i]],表示减去第i个元素。

2024-07-17 16:17:10 296

原创 分割等和子序列

可以认为是对数组中取部分元素,使得加合是所有元素之和的一半(转换成这个问题就会发现本题是标准的01背包问题,就是看每个元素是取还是不取就行)。dp[i-1][j-num[i]],取第i个元素,但前提是dp[i-1][j-num[i]]得下标合法且存在。dp[i][j]=dp[i-1][j](一定有) ||dp[i-1][j-num[i]](可能有)。则dp[i][j]表示前i个元素,结果是j是否可能存在。对于j=0时,对任意i为真,因为一个都不取一定满足总和是j。dp[i-1][j],视为第i个元素不取。

2024-07-17 16:07:34 126

原创 01背包问题

DP41 【模板】01背包你有一个背包,最多能容纳的体积是V。现在有n个物品,第i个物品的体积为𝑣𝑖vi​ ,价值为𝑤𝑖wi​。(1)求这个背包至多能装多大价值的物品?(2)若背包,求至多能装多大价值的物品?

2024-07-16 16:57:46 163

原创 力扣题解(两个字符串的最小ASCII删除和)

此时可以分为三种情况,保s1[i],删s2[j],保s2[j],删s1[i],删s1[i]和s2[j],其中第一种情况和第三中情况共同构成了dp[i][j-1]+s2[j],第二种和第三中情况共同构成dp[i-1][j]+s1[i]。此时可以分为三种情况,s1[i]在dp[i][j]而s2[j]不在,s2[j在而s1[i]不在,s1[i]和s2[j]都不在,其中第一种情况和第三中情况共同构成了dp[i][j-1],第二种和第三中情况共同构成dp[i-1][j]。思路2:求公共子序列中ascii最大的和,

2024-07-16 15:03:16 340

原创 力扣题解(最长重复子数组)

s2[j],dp[i][j]=0,因为此时包含的元素无论与前面的元素怎么组合,都无法有公共的子序列(最后一个位置的元素一定不一样),因此长度为0.对于i为0的情况,空串只能和空串相同,因此dp[0][k]=0,对于j为0的情况同理。s1[i]==s2[j],则dp[i][j]=dp[i-1][j-1]+1;长度最长的公共子数组是 [3,2,1]。、长度最长的子数组的长度。

2024-07-16 14:48:46 202

原创 力扣题解(通用符匹配)

则dp[i][j]=dp[i][j-1]||dp[i-1][j-1]||dp[i-2][j-1]||dp[i-3][j-1]|.........||dp[0][j-1],上述为匹配0个到全部i个都被匹配的所有情况,但这部分是可以进行一定程度上的化简的,即对于匹配一个到匹配全部i个,可以看成是dp[i-1][j],即已经默认去掉一个的情况下的可能。当p[j]为小写字母,仅当p[j]==s[i]时有dp[i][j]=dp[i-1][j-1]。",一定有有dp[i][j]=dp[i-1][j-1]。

2024-07-15 16:46:45 320

原创 力扣题解(正则表达式匹配)

可以视为dp[i-1][j],即认为至少匹配成功一个,就是无条件去掉s的最后一个,这样的话去掉多个的情况就会被包含在其中(比如dp[i-1][j]中又会有dp[i-2][j],就是dp[i][j]去掉两个的情况),但这部分又是可能有,因为去掉的前提是能匹配上,因此需要加上限定条件,即p[j-1]==s[i]才可以去掉。通过p[j]的各种情况来划分。当p[j]是一般小写字母,则若能和s[i]匹配,则dp[i][j]=dp[i-1][j-1](视为两者都去掉一个相同字符,匹配结果不会变化)。

2024-07-15 16:34:47 241

原创 力扣题解(交错字符串)

dp[i][j]表示s1的前i个字符,s2的前j个字符匹配s3的前i+j个字符是否有可以匹配成功,则dp[i][j]的组成可以是s1的前i-1个字符,s2的前j个字符加上s1的第i个字符。这么做的好处是限定了最后一个s1/s2要插入的字符是那个,将所有情况分成了两种,则dp[i][j]=dp[i][j-1] (当s2的第j个字符可以匹配时才有)||dp[i-1][j](当s1的第i个字符可以匹配才有)。如dp[0][0]表示空串,一定可以匹配成功,故为true,然后看i=0的情况和j=0的情况。

2024-07-15 16:16:11 314

原创 力扣题解(不同的子序列)

则此时dp[i][j]需要分成两种情况,一种是包含s[j]的数值,一种是不包含s[j]的数值(之所以这么做,和题目要求是有关的,因为本题要的是所有出现次数,则包含s[j]出现次数一定和不包含s[j]出现次数不重叠,且二者可以表示所有可能,因此这么设计)则此时若包含s[j],则必须由t[i]=s[j],不然s[j]是一定不包含的(因为此时t[i]是一定要被表示的,且是最末尾的一个字符,而s[j]也是最末尾一个字符,二者必须相同).若不包含s[j],则是由s的(0-j-1)来表示t的(0-i).

2024-07-14 16:54:10 186

原创 力扣题解(不相交的线)

当nums1[i]!=nums2[j],则此时dp的构成有两种,一种是dp[i-1][j],一种是dp[i][j-1],即在舍弃i或j位置后的最大长度就是dp[i][j]的值。之所以只需要这两个dp就行,是因为dp本身规定是存放从(0-k)位置的值,因此dp[i-1][j]和dp[i][j-1]一定可以涵盖所有不包含i,j其中一个元素的最长长度。若nums1[i]==nums2[j],则可以视为dp[i-1][j-1]加一,即在没有i,j时的最长长度再加一。以这种方法绘制线条,并返回可以绘制的最大连线数。

2024-07-14 16:37:45 214

原创 力扣题解( 让字符串成为回文串的最少插入次数)

当i位置和j位置不同时,此时可以分情况讨论,dp[i][j]的可能构成是对(i,j-1)的回文序列加上j位置元素,则只需要再加一即可构成新的回文序列(所加的就是一个j位置的数值),同理,也可能是(i-1,j)的回文序列再加上i位置元素,此时也是加一,也可能是(i+1,j-1)位置的回文序列,在两侧分别加一个元素(一个加i位置,一个加j位置),则dp[i][j]就是上述三种情况的最小值。本题要求的是最少插入次数,规定dp[i][j]是从i到j的最小插入次数,此时研究dp[i][j]的构成。

2024-07-14 16:30:19 321 1

原创 力扣题解(最长回文子序列)

思路:设dp[i][j]是从i到j的最长回文子序列,此时若i+1和j-1位置元素大小相同,则dp[i+1][j-1]=dp[i][j]+2(也就是扩大了两个数字),而当不相同的时候,则表示此时dp[i+1][j-1]的实际是由(i到j+1或者i-1到j构成的最长回文子序列),则dp[i-1][j+1]=max(dp[i-1][j],dp[i][j+1]).由于dp[i][j]表示(i到j)的最长,则dp[0][n-1]表示的就是整个字符串的回文子序列长度。,找出其中最长的回文子序列,并返回该序列的长度。

2024-07-14 16:22:05 235 1

原创 力扣题解(分割回文串II)

细节:由于j是默认从0位置开始计算的,则当j=0时,即(0,i)本身可以构成一个回文串,而j-1是下标-1,dp中没有下标为-1的元素,因此需要单独说明此时dp[i]=0(因为整体是一个回文串,因此可以一刀不切),如果想和j等于别的值保持一致,则dp需要开辟N+1个空间,第一个空间dp[0]=-1,dp[i]表示已i-1位置元素为最后一个元素切割的最小次数。分割成一些子串,使每个子串都是。

2024-07-13 16:13:10 220 1

原创 力扣题解(分割回文串IV)

因为可以在o(N)时间内求出来所有位置为中心的最长回文串长度,则此时当(j,i)为一个回文串,判断(0-j-1)和(i+1,n-1)位置是否是回文串时,可以只需要判断(0,i-1)的中心位置的最大回文串是否能包含(0,i-1)即可,对于右半部分一样。注意,由于回文串可能是奇数个字符组成,也可能是偶数个字符组成,故分别求出以i位置为中心,奇数个最大长度和偶数个最大长度。然后对于(0,j-1),需要先判断是奇数个还是偶数个,然后用对应的最大长度判断即可。当一个字符串正着读和反着读是一模一样的,就称其为。

2024-07-13 16:06:01 350

原创 力扣题解(回文子串)

具体做法是以i位置为中心两边扩展,和以i,i+1位置为中心向两边扩展,分别求出符合要求的回文子串数目,然后加合即可。首先,本题要求的是数目,而且不要求没有重复,因此不同位置可以出现相同的回文子串。是字符串中的由连续字符组成的一个序列。是正着读和倒过来读一样的字符串。,请你统计并返回这个字符串中。

2024-07-13 15:59:16 277

原创 力扣题解( 等差数列划分 II - 子序列)

然后,由于可以出现重复的子序列,因此对于i位置之前所有符合数值的下标都需要进行加上。首先,本道题要求的是所有可能的子序列的数目,要注意此时子序列可以重复出现,因为是友不同位置的同一元素构成的,比如:{5,5,10,15},可以构成两个子序列{5,10,15},{5,10,15},不同点在于用的5来自不同下标。再者,对于所求的数量与前面所求数量有所关联的题,往往会出现dp[i]=dp[j]+1,这里的加一是指会额外多出一种可能,dp[j]表示在原本所有j位置构成的字串加上i位置仍是字串,因此数量不变。

2024-07-13 15:56:29 333

原创 力扣题解(最长回文子串)

对于第i个字符,可能的回文子串构成方式有两种,一种是以i位置元素为中心元素,向着两边扩展,一种是以i位置和i+1位置元素为中心,分别向两边扩展。因此对于每个字符i,按照上述两种方式分别求出以当前位置为中心的最长回文字串,然后判断最长是哪个即可。

2024-07-13 15:48:08 213

原创 力扣题解(最长等差数列)

本题和求斐波那契数列做法很相似,不同点也就是判断不同,因此同样采用多维dp来求解。规定dp[i][j]是i位置元素在前,j位置元素在后构成等差子序列的最大长度。此时在(0-i-1)之间找k,使得nums[j]-nums[i]=nums[i]-nums[k],则nums[k]=2*nums[i]-nums[j],求符合条件的k,然后dp[i][j]=dp[k][i]+1。注意,此处也要求k位置一定小于i位置,否则k在i,j之间无法保证能在拥有i位置获得的最长等差数列加上k,j位置元素仍能构成等差数列。

2024-07-12 15:36:53 306

原创 力扣题解(最长的斐波那契子序列的长度)

首先,本题中要求i位置的斐波那契子序列,一定和(0-i-1)的元素有关,因为是在(0-i-1)中的某些元素加上i位置元素构成以i位置为最后一个元素的最长斐波那契子序列。因此需要多维dp[i][j],表示前一个元素是i位置,后一个元素是j位置去构成斐波那契子序列,这时候在前面符合要求的元素的值就是arr[j]-arr[i],只有满足数值的才可能能构成斐波那契数列。当k出现在前面时,k位置构成的斐波那契数列加上i位置,j位置元素不受影响一定还是斐波那契数列,因此符合要求。中最长的斐波那契式的子序列的长度。

2024-07-12 15:27:39 217

原创 力扣题解( 最长定差子序列)

本题的思路很简单,规定dp[i]是包含i位置元素的最长定差子序列,此时只需要确认在(0-i-1)位置中是否存在一个下标j,是的i位置元素减j位置元素仍时diffenence,则此时dp[i]=dp[j]+1.本题的优化是利用哈希表,存放已经求出最长定差子序列的元素和对应的下标,这样可以在O(1)时间内查找(0-i-1)中是否存在值为arr[i]-difference的元素。是指在不改变其余元素顺序的情况下,通过删除一些元素或不删除任何元素而从。中最长等差子序列的长度,该子序列中相邻元素之间的差等于。

2024-07-12 15:15:18 207

原创 力扣题解( 最长数对链)

规定dp[i]是以i位置元素为最后一个元素的最大长度,此时dp[i]与dp[i-1]之间的关系无法确定,因为pair数组此时是无序的,以i位置元素为最后一个的最大长度可能包含下标大于i的元素,因此需要先对pairs数组重新排列,保证以i位置为最后一个元素时,所有可能包含的元素全在(0-i-1)中。之所以按照left,right都行的原因是,若按照left排,则(0-i-1)的所有的right元素有小于或大于i位置处left元素,而(i+1-n)位置元素的right位置元素一定大于i位置left元素。

2024-07-12 15:09:48 370

原创 力扣题解( 最长递增子序列的个数)

再遍历完(0-i-1)后,要更新maxlen和maxcount,若当前的maxlen等于len[i],则表示以i位置结尾的最大长度和(0-i-1)中某个最大长度一致,则maxcount等于count[i]+maxcount,若maxlen小于len[i],则maxlen更新,maxcount更新。若maxlen大于len[i],则表示最长不是包含i的,则不变。就是一次更新是只看当前i位置的len和count,一次比较是求(0-i)里的最大len和最大count。给定一个未排序的整数数组。

2024-07-12 11:23:06 228

原创 力扣题解(摆动序列)

本题中存在两种情况,差为正和差为负,因此用dp表示前一个差为正,包含第i个元素的最长摆动序列长度,f表示前一个差为负,包含第i个元素的最长摆动序列长度。则此时dp,f之间存在关联。在求dp[i]时,则从(0-i-1)中找前一个差值是负,且满足i位置减j位置元素差值为正。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始顺序。如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为。

2024-07-11 16:33:48 284

原创 力扣题解( 最长递增子序列)

规定dp[i]存放包含第i个元素在内的最长递增子序列,则dp[i]可以表示为从(0-i-1)中任何一个dp[j]加上i位置的元素的值(当i位置元素大于j位置元素时),则只需要从(0-i-1)中找出符合元素大小关系且dp[j]最大的dp[j]+1=dp[i]。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。,找到其中最长严格递增子序列的长度。

2024-07-11 16:29:45 245

原创 力扣题解(环绕字符串中唯一的子字符串)

此时dp中存放着所有非空字串的数目,但需要去重。去重主要利用了字串之间的特点,即若以同一个字符结尾,则二者必定一个是另一个的子串(因为以同一个字符结尾前面一定一样),则只需要存放其中更大的那个就行(因为dp[i]存放以i位置字符结尾的所有字串的数目,一定包含更少的那一部分)。dp[i]+=dp[i-1],用+=,可以想成dp[i-1]的所有可能加上了最后一个字符的数目(dp[i-1]),和只有最后一个字符的数目(dp[i])之和构成新的dp[i];思路:本题中要求求所有存在的非空字串,且字串不能重复。

2024-07-11 16:25:28 287

原创 力扣题解(单词拆分)

规定dp[i]是从0-i的字符串是否可以被字典表示,则dp[i]可能通过0-i-1之间的dp加一个字典中的字符串表示,则只需要每次遍历字典,看是否有存在j,使得j-i是字典中的字符串,且dp[j-1] 为可以被表示,则此时dp[i]为正。初始化中dp[0]为true,原因是没有元素时一定可以由字典表示,即没有一个字符串。不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。如果可以利用字典中出现的一个或多个单词拼接出。

2024-07-11 16:13:32 253

原创 力扣题解(设计跳表)

跳表实现最复杂的地方是找数值是num的节点对应的所有前一个节点(即每层的前一个节点),实现方法是从最高层开始查找,当节点的值大于num或者节点是不存在时,则本层的前一个前一个节点找到,在去低一层找,之所以可以去低一层找,是因为低一层中存放的节点值一定是在高一层的节点的值中间,而与num的大小不能确定,因此需要去进一步查找。对于搜索,只需要从返回的数组的下标为0的节点判断即可,因为该节点所指的下一个节点一定是数组所有节点所指的下一个节点的最小值,如果这个节点存放的值都不对,则必定找不到所需的节点。

2024-07-10 17:21:56 444

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除