- 博客(15)
- 收藏
- 关注
原创 一和零题解
当i>=1时,无论如何dp[i][j][k]都不会小于dp[i-1][j][k]了,所以,我们直接将dp[i-1][j][k]赋给dp[i][j][k]。然后后面就开始考虑如果j大于等于字符串中0的数量并且k也大于等于字符串中1的数量,那么dp[i][j][k]就可以由dp[i-1][j-num0[i]][k-num1[i]]+1转移得来,我只需要取dp[i][j][k]和dp[i-1][j-num0[i]][k-num1[i]]+1的最大值即为最终的结果。给你一个二进制字符串数组。
2025-08-29 20:38:23
366
原创 格雷编码题解
刚开始遇到这道题目呢,可能都会想着去回溯解决,因为看起来除了回溯去枚举,没有什么能一下子想到的算法了,但是在看完题解以后,对于归纳出来的方法感觉惊为天人,让我对这道题很有收获。很多人看完以后,可能对这个的原理不太理解,我想了好久终于理解了这个算法的核心,看似是归纳,实际上是基于已出现的数字的一个变式。于是我们可以看出来,后面的情况都是在前面一种的基础上,进行“倒序调整”后,再在前端补充一个“1”形成,于是可以形成两个for循环的代码。[0,1,3,2] 的二进制表示是 [00,01,11,10]。
2025-08-28 21:33:12
255
原创 132模式题解
遇到这道题,很容易去想到单调栈,但是使用这个单调栈的时候,又有点不一样。如果我们正序去遍历的话,假如维护一个单调递增栈,找出来132模式中的1,3以后,如果能找到2所对应的元素确实还可以,但是如果这个1,3的后面没有相应的2,如何更新这个单调栈却又成了问题。序列中有 3 个 132 模式的的子序列:[-1, 3, 2]、[-1, 3, 0] 和 [-1, 2, 0]。序列中有 1 个 132 模式的子序列: [1, 4, 2]。序列中不存在 132 模式的子序列。题目重述:给你一个整数数组。
2025-08-20 21:58:50
222
原创 整数拆分题解
整体的思路应该是建立一个dp数组,dp[i]表示将i拆分成至少两个正整数的最大乘积,那我可以从2开始计算dp[i]一直计算到dp[n],将i拆分成具体什么也需要枚举,每次枚举都应该取j*(i-j)和j*dp[i-j]的最大值,分这两种情况的原因是,不确定i-j是否还需要分解,dp[i-j]表示至少需要分解成两个数,而(i-j)表示不再需要拆分,这样就可以将所有情况考虑完整,然后将所有枚举的最大值赋给dp[i],dp[i]就完成了计算,最后结果返回dp[n]即可。),并使这些整数的乘积最大化。
2025-07-31 12:53:35
241
原创 买卖股票的最佳时机Ⅲ
除了状态转移以外,还需要考虑初始化的问题,dp[0][0]=0没有任何问题,dp[0][1]代表进行买入操作应该等于-prices[0],dp[0][2]可以理解为当天买入当天卖出操作应该等于0,dp[0][3]代表进行完当天买入卖出操作后再进行买入操作应该等于-prices[0],dp[0][4]同理,应该等于0.注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。(5)第二次卖出股票时,要不就前一次已经卖出股票了,要不就前一次持有股票,在进行卖出操作,此时手里的钱应该取它们的最大值。
2025-07-14 21:25:39
254
原创 接雨水题解
上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。个非负整数表示每个宽度为。
2025-07-12 16:19:59
300
原创 求解集合子集题解
二进制表示法呢,就是一个集合元素个数是n,其子集个数就是(1<<n),如果每个集合每个元素对应某一位,那么就可以用0,1来表示选还是不选某个元素,而恰好从0~(1<<n)-1的二进制表示正好可以把所有情况给列全,接下来要考虑的就是如何把二进制的每一位都提取出来,判断是否添加到集合当中去,此时就应该采用位运算,然后与1取按位与了,最后的结果为1则添加该位对应的数字,如果为0则不添加该位对应的数字。返回该数组所有可能的子集(幂集)。题目:给你一个整数数组。
2025-06-29 17:24:03
246
原创 柱状图中的最大矩形题解
当遇到第一个不单调的高度时,意味着面积可能没有继续增大,有可能反而变小了,于是开始计算之前的栈还单调的时候的面积,于是将破坏单调性的栈顶一个个弹出,每次弹出的时候计算这时候的面积,不断更新面积,直到栈此时又恢复单调递增性为止,往复此过程一定可以找出最大的面积。在这时候可能会有些疑问了,既然要让它恢复单调,为什么不直接弹出所有的破坏单调的下标呢,因为一个个弹会保证将所有面积考虑在内,可能某些情况它的宽度确实很小,但是它的高度极高,此时它可能会比更宽更矮的时候面积更大。最大的矩形为图中红色区域,面积为 10。
2025-06-29 12:11:26
260
原创 正则表达式匹配
接着就是比较繁琐难以理解的部分了,开始对dp[i][j]的状态转移情况开始分析,如果p[j-1]!现在开始考虑匹配零个的情况,零个的时候,只需要将状态转移到dp[i][j-2]即可,如果考虑多个匹配的时候,可以在状态转移的时候考虑上dp[i-1][j],至于为什么是考虑dp[i-1][j]而不是dp[i-1][j-1],因为dp[i-1][j-1]只是匹配一个的情况的状态转移,而dp[i-1][j]是匹配多个的情况的状态转移,dp[i-1][j-1]的状态转移会漏失掉多个匹配的情况。的,而不是部分字符串。
2025-06-28 17:57:44
540
原创 跳跃游戏Ⅱ题解
从下标为 0 跳到下标为 1 的位置,跳。向后跳转的最大长度。生成的测试用例可以到达。跳到最后一个位置的最小跳跃数是。步到达数组的最后一个位置。处,你可以跳转到任意。
2025-06-24 15:22:50
224
原创 缺失的第一个正数
刚开始看到这道题,我先想着用暴力解法来解决,暴力解法极其简单,先进行排序,然后将指针指向正数,然后进行筛选,设置一个标杆,数组与标杆相等就把指针向后移,相差一个就把标杆向后移(此操作是为了解决有些数字重复出现的情况),相差超过一个就找到缺失的正数了,返回i+i即可,但此种做法时间复杂度是O(nlogn),并非所要求的O(n),空间倒是线性的。,请你找出其中没有出现的最小的正整数。范围 [1,2] 中的数字都在数组中。题目:给你一个未排序的整数数组。1 在数组中,但 2 没有。最小的正数 1 没有出现。
2025-06-23 15:09:37
336
原创 下一个排列题解
就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的。不存在一个字典序更大的排列。就是将其所有成员以序列或线性顺序排列。修改,只允许使用额外常数空间。,以下这些都可以视作。
2025-06-21 22:51:31
362
原创 无重复字符的最长子串的题解
对于这道题呢,我首先想到的是使用移动窗口法,即在遍历数组的过程中,不断移动窗口,向后遍历的时候呢,先比较此字母是否已经出现,如果已经出现过,则将窗口左边框移动到此前字幕出现的下一个字母,然后更新此字母的最新位置,如果未出现过,更新字母的位置,左边框不动,在这个移动边框的过程中,保存边框的长度,以此计算出最长的无重复字符字串的长度。,请你找出其中不含有重复字符的。请注意,你的答案必须是。由英文字母、数字、符号和空格组。因为无重复字符的最长子串是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。
2025-05-24 22:05:20
361
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅