第二次刷题不在idea写代码,而是直接在leetcode网站上写,“逼”自己掌握常用的函数。
标志 | 掌握程度 | 解释 | 办法 |
---|---|---|---|
⭐ | Fully 完全掌握 | 看到题目就有思路,编程也很流利 | |
⭐⭐ | Basically 基本掌握 | 需要稍作思考,或者看到提示方法后能解答 | |
⭐⭐⭐ | Slightly 稍微掌握 | 需要看之前写过的代码才能想起怎么做 | 多做 |
⭐⭐⭐⭐ | absolutely no 完全没有掌握 | 需要看题解才知道怎么做 | 背 |
⭐⭐⭐⭐⭐ | 有难度的高频题 | 需要看题解才知道怎么做,而且过几天就忘了这道题怎么做了 | 背背 |
91 | ⭐ | Medium | 多维动态规划 | 62.不同路径 | dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; | |
---|---|---|---|---|---|---|
92 | ⭐ | Medium | 多维动态规划 | 64.最小路径和 | dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j]; | |
93 | ⭐⭐⭐⭐ | Medium | 多维动态规划 | 5/最长回文子串 | dp[i][j]表示字符串s[i]-s[j]组成的字符串是否是回文子串 初始化dp数组:dp[i][i] = true 外循环遍历j,内循环遍历i,之所以这样做是为了避免,当遍历到[0][3]的时候,dp[1][2]还没遍历到的情况 内循环中,先判断i,j是否是相邻字符,是的话,直接判断是否相等。 如果不是相邻,则dp[i][j] = dp[i + 1][j - 1] && (s.charAt(i) == s.charAt(j)); 更新最大回文子串长度,并更新子串的左右边界。 | |
94 | ⭐⭐ | Mediuim | 多维动态规划 | 1143.最长公共子序列 | 注意dp数组的初始化 if(ch1[i] == ch2[j]) dp[i][j] = dp[i - 1][j - 1] + 1; else dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]); | |
95 | ⭐⭐⭐ | Medium | 多维动态规划 | 72.编辑距离 | 不好理解但是好写 // ch1[i]==ch2[j]:dp[i][j] // 删除:dp[i - 1][j] + 1,如果删除操作,说明当前字符多余,说明dp[i - 1][j]已经匹配好 // 插入:dp[i][j - 1] + 1,如果插入操作,说明当前字符少了,说明dp[i][j - 1]已经匹配好 // 替换:dp[i - 1][ j - 1] + 1 if(chs1[i - 1] == chs2[j - 1]) dp[i][j] = dp[i - 1][j - 1]; else dp[i][j] = Math.min(dp[i - 1][j - 1], Math.min(dp[i - 1][j], dp[i][j - 1])) + 1; | |
96 | ⭐ | Easy | 技巧 | 136.只出现一次的数字 | 异或运算 ^ ans = ans ^ nums[i]; | |
97 | ⭐⭐⭐ | Easy | 技巧 | 169.多数元素 | 摩尔投票法:遍历并统计票数,当发生票数和=0时,剩余数组的众数一定不变。 定义票数votes 和 众数x if(votes == 0) x = num; votes = num == x ? votes + 1 : votes - 1; | |
98 | ⭐⭐⭐⭐ | Medium | 技巧 | 75.颜色分类 | 快速排序的子过程 快速排序的子过程partition [0, zero) = 0 [zer0, two) = 1 [two, len) = 2 用zero来记录0的右边界 用two来记录2的左边界,将0都交换到数组左侧,将2都交换到数组右侧 | |
99 | ⭐⭐⭐⭐ | Medium | 技巧 | 31.下一个排列 | 背吧,无需多言 两次扫描,注意:在第一步和第二步注意跳过相等的情况 4 5 2 6 3 1 从后往前找到第一对顺序对 i, i + 1,nums[i] < nums[i + 1],这里也就是 2 6 在[i + 1, len)从后往前找到第一个大于nums[i]的数nums[j],也就是3,交换nums[i] nums[j],这时候变成 4 5 3 6 2 1 再将[i + 1, len)变为升序排序,反转 6 5 4 3 2 1 原本就为降序时,直接进行第三步 | |
100 | ⭐⭐⭐ | Medium | 技巧 | 287.寻找重复数 | 背吧,无需多言 数组索引 -> 数组元素 形成一个环形链表 快慢指针寻找相交节点,142题的思路 |
图片版: