- 博客(107)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
原创 LeetCode【32】最长的有效括号
例如括号字符串 “)()((())(”,最后留在栈中的字符下标为 0 3 8。根据这三个断点可以得到,两个有效括号子串的长度分别为 3-0-1 = 2 和 8-3-1=4。所以最长的长度就是 4。括号字符串依次入栈,删除匹配的成对括号。最后栈中留下的都是无法匹配的断点。这些断点的差值减一就是断点间有效括号串的长度,取这些长度的最大值即可。
2023-11-19 19:32:58 107
原创 LeetCode【13】罗马数字转整数
第十二题的逆运算,方法同理。需要注意的是IV、IX、XL、XC、CD、CM这六种特殊的情况。正常情况下每个字符找到对应的数值累加,这六种特殊字符都是左边的数值比右边的数值小。这里以IV举例,IV对应数字是1和5,1<5 ,组成的罗马字符左边比右边小。IV可以看作先减1再加5。循环每个字符,若当前字符比下个字符代表的数值小,就这么处理。注意数组越界异常,最后一个字符一定是加法。因为 4 也是先减在加,加在后面。
2023-11-19 19:02:16 200
原创 LeetCode【560】和为k的子数组
转化为前缀和问题,和为k,即为:前缀和差值为k的情况统计;为什么要转化为前缀和呢?因为和为k的子数组可能有n个元素,但是前缀和差值为k,只有两个元素,可以借助map去做,类似两数之和问题。
2023-11-16 00:53:37 276
原创 LeetCode【41】缺失的第一个正数
思路:https://blog.csdn.net/weixin_45271005/article/details/127981903。第i个位置的数,如果再数组 0到length-1范围内,则将其放到对应的位置;再遍历一遍数组,找到第一个不在位置i的正数数字,即为所求。
2023-11-15 22:58:17 160
原创 LeetCode【17】电话号码的字母组合
参考:https://blog.csdn.net/weixin_46429290/article/details/121888154。和上一个题《子集》的思路一样,先画出树结构,看树的深度(遍历层级),树的宽度(横向节点)分别是什么,然后套用模板,这题自然成型。
2023-10-15 14:33:45 254
原创 LeetCode【78】子集
思路:https://zhuanlan.zhihu.com/p/308398438。需要形成回溯问题的模板,然后套用模板编写代码。3、循环体(单层搜索逻辑)1、寻找递归函数参数。
2023-10-15 13:13:25 62
原创 LeetCode34 在排序数组中寻找元素的第一个和最后一个位置
最后,因为target可能不存在数组中,因此我们需要重新校验我们得到的两个下标,看是否符合条件,如果符合条件就返回,看是否符合条件,如果符合条件就返回[-1,-1]。直观的思路肯定是从前往后遍历一遍。考虑target开始和结束位置,其实我们要找的就是数组中「第一个等于target的位置」和「第一个大于target的位置减一」。也相当于寻找数组中「第一个大于(target - 1)的位置」和「第一个大于target的位置减一」。由于数组已经排序,因此整个数组是单调递增的,我们可以利用二分法来加速查找的过程。
2023-10-13 22:07:17 398
原创 LeetCode【560】和为K的子数组
参考:https://blog.csdn.net/weixin_42092787/article/details/106378323。使用前缀和可以解,但是并不快,还需要借助map优化;实现较为复杂,// TODO。
2023-10-13 18:32:30 57
原创 LeetCode【48】旋转图像
第一种思路:使用额外二维矩阵,变化后的直接存入额外的矩阵,不符合题意。以示例2中,第3行,第1列的13为例,旋转后,变为了第1行,第2列。旋转90 后列的位置,变为:n-原行的位置+1。旋转90 后行的位置,变为:原列序号。第二种思路:使用翻转代替旋转。注:掌握技巧后,代码不易出错。
2023-10-13 17:18:04 203
原创 LeetCode【54】螺旋矩阵
上下左右,四个游标,代表边界,每次遍历完一行或一列都移动游标;直到 down > up、right < left,边界条件,则循环结束;参考:https://blog.csdn.net/ShiXiAoLaNga/article/details/124975293。
2023-10-13 15:45:13 109
原创 LeetCode【73】矩阵置零
1、从题目看,在遍历数组的同时,如果遍历到0,回溯i,j,将其对应的行列变为0。不能变更后面的,后面遍历整个数组都将变成0.2、需要额外的空间存储要变0的标记位,最后将数组需要的位置设置为0即可。3、额外需要两个set记录行列即可。
2023-10-13 14:58:23 501
原创 LeetCode【11】 盛水最多的容器
1、双指针,储水为(R-L )* 二者较小高度,如题目,(9-2)* 7 = 49。2、双指针向中间靠,每次移动较矮的指针。
2023-10-12 20:01:09 308
原创 LeetCode【128】最长连续序列
1、最长连续序列的长度为 y-x+1,如1-4:4-1+1 = 4。3、只要找到最小的数值,并由此开始计算,不产生重复计算,则为On。2、不要被这里的On误导,不敢使用双层循环。
2023-10-12 19:12:22 132
原创 LeetCode【152】乘积最大子数组
2、0、2、3 子数组最大值是2*3 = 6,并非dp过程中,从下标0累乘的怎么办?这里不用担心,因为在dp的过程中会逐渐的求Math.max和Math.min。这里不同于传统的dp题目,需要一个dp[]保存中间的dp结果,而是使用dpMax 和 dpMin保存dp过程中的最大值最小值。这里dp的思路是,当前最大乘积dp[i] 一定是dp[i-1] 或者是dp[i-1] * nums[i]此题重点理解公式推导。
2023-10-12 16:13:37 86
原创 LeetCode【322】零钱兑换
以例子1为例,凑成11,需要dp10 + 一个1元硬币。凑成11,需要dp9 + 一个2元硬币。DP问题都需要推导公式。
2023-10-11 17:25:50 105
HTML通过js获取table指定行列的值
2016-05-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人