fFee-ops's Blog
79. 单词搜索(高频题) 79. 单词搜索(高频题)
79. 单词搜索 解题思路 代码 解题思路做多了这种题目,直接发现是回溯法,一个方向一个方向的去试就行了 代码class Solution { public boolean exist(char[][] board, Stri
2021-03-18
98. 验证二叉搜索树(高频题) 98. 验证二叉搜索树(高频题)
98. 验证二叉搜索树 解题思路 代码 解题思路中序遍历时,判断当前节点是否大于中序遍历的前一个节点,如果大于,说明满足 BST,继续遍历;否则直接返回 false。 代码class Solution { long pre =
2021-03-17
84. 柱状图中最大的矩形(高频题) 84. 柱状图中最大的矩形(高频题)
84. 柱状图中最大的矩形 解题思路 代码 解题思路一刷 2021/3/17,没搞懂题解见这里 二刷:2021/4/6这题其实就是说:我们可以遍历每根柱子,以当前柱子 i 的高度作为矩形的高,那么矩形的宽度边界即为向左找到第一个高度小
2021-03-17
64. 最小路径和(高频题) 64. 最小路径和(高频题)
64. 最小路径和 解题思路 代码 解题思路最基本的动态规划,问题,找准了dp数组的含义就没啥难的了。 dp[i][j]:到下标(i,j)的最小和 代码class Solution { public int minPathSu
2021-03-17
62. 不同路径(高频题) 62. 不同路径(高频题)
62. 不同路径 解题思路 代码 解题思路求最值问题,而且看得出来比较复杂的情况,直接动态规划。 dp[i][j]:到坐标(i,j)共有几条路径 那么结果就是dp[m-1][n-1] 因为只能向右或者向下移动,所以状态转移方程
2021-03-17
56. 合并区间(高频题) 56. 合并区间(高频题)
56. 合并区间 解题思路 代码 解题思路是否有重叠区间的问题,直接贪心思路,根据数组的end或者start进行升序排序,再看看start和end的大小关系来判断是否重叠。像435题就是一样的类型。不过本题要注意,一定要根据start
2021-03-17
49. 字母异位词分组(高频题) 49. 字母异位词分组(高频题)
49. 字母异位词分组 解题思路 代码 解题思路本题没有啥通用的套路,只能直接去想咋做了。因为异位词排序后是一样的,所以只需要维护一个map,key为排序后的字符串,val为一个list集合,其中包含着原本的字符串。具体分析如下 代码
2021-03-17
48. 旋转图像(高频题) 48. 旋转图像(高频题)
48. 旋转图像 解题思路 代码 解题思路这是一个技巧题目,用不上什么套路。 技巧就是:先以对角线(左上<—>右下)为轴进行翻转,再对每行左右翻转即可。 另外:如果是反转一维数组呢? 代码class Solution {
2021-03-17
39. 组合总和(高频题) 39. 组合总和(高频题)
39. 组合总和 解题思路 代码 解题思路看到是组合问题,直接用回溯法,然后再剪枝避免出现重复组合就行了,直接套回溯法模板。 代码class Solution { List<List<Integer>> res =
2021-03-17
33. 搜索旋转排序数组(高频题) 33. 搜索旋转排序数组(高频题)
33. 搜索旋转排序数组 解题思路 代码 解题思路本质上还是有序数组嘛,所以用二分搜索。 首先找到旋转点 将数组在逻辑上从旋转点切分成两个有序数组 分别对两个有序数组进行二分搜索即可 代码class Solution {
2021-03-16
32. 最长有效括号(高频题) 32. 最长有效括号(高频题)
32. 最长有效括号 解题思路 代码 解题思路有关括号匹配的问题一般都用栈。 我们扫描到左括号,就将当前位置入栈。扫描到右括号,就将栈顶出栈(代表栈顶的左括号匹配到了右括号),然后分两种情况。 栈不空,那么就用当前的位置减去栈顶的存
2021-03-16
31. 下一个排列(高频题) 31. 下一个排列(高频题)
31. 下一个排列 解题思路 代码 解题思路数组问题嘛,双指针 我们会尽可能的将低位的数字变大,这样才符合「下一个排列」的定义。 为了更好理解,我们结合样例来分析,假设样例为 [1,3,5,4,1]: 从后往前找,找到第一个下降的
2021-03-16
3 / 21