fFee-ops's Blog
03
17
56. 合并区间(高频题) 56. 合并区间(高频题)
56. 合并区间 解题思路 代码 解题思路是否有重叠区间的问题,直接贪心思路,根据数组的end或者start进行升序排序,再看看start和end的大小关系来判断是否重叠。像435题就是一样的类型。不过本题要注意,一定要根据start
2021-03-17
17
49. 字母异位词分组(高频题) 49. 字母异位词分组(高频题)
49. 字母异位词分组 解题思路 代码 解题思路本题没有啥通用的套路,只能直接去想咋做了。因为异位词排序后是一样的,所以只需要维护一个map,key为排序后的字符串,val为一个list集合,其中包含着原本的字符串。具体分析如下 代码
2021-03-17
17
48. 旋转图像(高频题) 48. 旋转图像(高频题)
48. 旋转图像 解题思路 代码 解题思路这是一个技巧题目,用不上什么套路。 技巧就是:先以对角线(左上<—>右下)为轴进行翻转,再对每行左右翻转即可。 另外:如果是反转一维数组呢? 代码class Solution {
2021-03-17
17
39. 组合总和(高频题) 39. 组合总和(高频题)
39. 组合总和 解题思路 代码 解题思路看到是组合问题,直接用回溯法,然后再剪枝避免出现重复组合就行了,直接套回溯法模板。 代码class Solution { List<List<Integer>> res =
2021-03-17
16
33. 搜索旋转排序数组(高频题) 33. 搜索旋转排序数组(高频题)
33. 搜索旋转排序数组 解题思路 代码 解题思路本质上还是有序数组嘛,所以用二分搜索。 首先找到旋转点 将数组在逻辑上从旋转点切分成两个有序数组 分别对两个有序数组进行二分搜索即可 代码class Solution {
2021-03-16
16
32. 最长有效括号(高频题) 32. 最长有效括号(高频题)
32. 最长有效括号 解题思路 代码 解题思路有关括号匹配的问题一般都用栈。 我们扫描到左括号,就将当前位置入栈。扫描到右括号,就将栈顶出栈(代表栈顶的左括号匹配到了右括号),然后分两种情况。 栈不空,那么就用当前的位置减去栈顶的存
2021-03-16
16
31. 下一个排列(高频题) 31. 下一个排列(高频题)
31. 下一个排列 解题思路 代码 解题思路数组问题嘛,双指针 我们会尽可能的将低位的数字变大,这样才符合「下一个排列」的定义。 为了更好理解,我们结合样例来分析,假设样例为 [1,3,5,4,1]: 从后往前找,找到第一个下降的
2021-03-16
16
23. 合并K个升序链表 23. 合并K个升序链表
23. 合并K个升序链表 解题思路 代码 解题思路其实最开始的思路是N个指针,每次放最小的进新链表,但是这样时间复杂度太高了!合并两个有序链表可以考虑这样做。所以我选择维护一个小顶堆,将所有的元素都加入小顶堆,然后再出来的时候就是按照
2021-03-16
16
19. 删除链表的倒数第 N 个结点(高频题) 19. 删除链表的倒数第 N 个结点(高频题)
19. 删除链表的倒数第 N 个结点 解题思路 代码 解题思路链表,直接快慢指针,不是要删除第N个节点,我们就先定位到第N个节点,再删除就可以了。但是本题要注意,我们是fast.next != null就结束了,而不是fast !=
2021-03-16
16
17. 电话号码的字母组合(高频题) 17. 电话号码的字母组合(高频题)
17. 电话号码的字母组合 解题思路 代码 解题思路一看是个组合类型的题,直接用回溯法,就可以解决,具体看注释 代码class Solution { //存放最终结果 List<String> res = new
2021-03-16
16
11. 盛最多水的容器(高频题) 11. 盛最多水的容器(高频题)
11. 盛最多水的容器 解题思路 代码 解题思路这种能装多少水的问题一般都是用双指针!本题要注意和42.接雨水分开,两种求的并不是同一个东西,所以细节有些不同。但是大体上都是用的双指针。 本题的解题核心思想:面积取决于短板。①因此即使
2021-03-16
15
2. 两数相加(高频题) 2. 两数相加(高频题)
解题思路 由于是逆序,所以一个链表从头到尾刚好是数的低位到高位,因此while循环来依次对相同位处理 如果有进位,则需要在下一位考虑进位 如果已经到了最高位,此时有进位数,则还需要开辟一个链表节点,否则就不用开辟了 小技巧:对于
2021-03-15
10 / 26