fFee-ops's Blog
23. 合并K个升序链表 23. 合并K个升序链表
23. 合并K个升序链表 解题思路 代码 解题思路其实最开始的思路是N个指针,每次放最小的进新链表,但是这样时间复杂度太高了!合并两个有序链表可以考虑这样做。所以我选择维护一个小顶堆,将所有的元素都加入小顶堆,然后再出来的时候就是按照
2021-03-16
19. 删除链表的倒数第 N 个结点(高频题) 19. 删除链表的倒数第 N 个结点(高频题)
19. 删除链表的倒数第 N 个结点 解题思路 代码 解题思路链表,直接快慢指针,不是要删除第N个节点,我们就先定位到第N个节点,再删除就可以了。但是本题要注意,我们是fast.next != null就结束了,而不是fast !=
2021-03-16
17. 电话号码的字母组合(高频题) 17. 电话号码的字母组合(高频题)
17. 电话号码的字母组合 解题思路 代码 解题思路一看是个组合类型的题,直接用回溯法,就可以解决,具体看注释 代码class Solution { //存放最终结果 List<String> res = new
2021-03-16
11. 盛最多水的容器(高频题) 11. 盛最多水的容器(高频题)
11. 盛最多水的容器 解题思路 代码 解题思路这种能装多少水的问题一般都是用双指针!本题要注意和42.接雨水分开,两种求的并不是同一个东西,所以细节有些不同。但是大体上都是用的双指针。 本题的解题核心思想:面积取决于短板。①因此即使
2021-03-16
2. 两数相加(高频题) 2. 两数相加(高频题)
解题思路 由于是逆序,所以一个链表从头到尾刚好是数的低位到高位,因此while循环来依次对相同位处理 如果有进位,则需要在下一位考虑进位 如果已经到了最高位,此时有进位数,则还需要开辟一个链表节点,否则就不用开辟了 小技巧:对于
2021-03-15
739. 每日温度(高频题) 739. 每日温度(高频题)
解题思路这题是 “Next Greater Elment”类型的题目,直接用单调栈 (栈底元素最大)。 代码class Solution { public int[] dailyTemperatures(int[] T)
2021-03-15
剑指 Offer 36. 二叉搜索树与双向链表 剑指 Offer 36. 二叉搜索树与双向链表
剑指 Offer 36. 二叉搜索树与双向链表 解题思路 代码 解题思路 排序链表: 节点应从小到大排序,因此应使用 中序遍历 “从小到大”访问树的节点。 双向链表: 在构建相邻节点的引用关系时,设前驱节点 pre 和当前节点 cur
2021-03-10
剑指 Offer 37. 序列化二叉树 剑指 Offer 37. 序列化二叉树
剑指 Offer 37. 序列化二叉树 解题思路 代码 解题思路都用层级遍历。详情见书P257 代码/** * Definition for a binary tree node. * public class TreeNode
2021-03-10
剑指 Offer 66. 构建乘积数组 剑指 Offer 66. 构建乘积数组
剑指 Offer 66. 构建乘积数组 解题思路 代码 解题思路 1、计算每个元素左边所有元素的乘积,结果记录在left数组中,注意left[0] = 1,因为第一个位置左边没有元素; 2、计算每个元素右边所有元素的乘积,结果记录在r
2021-03-10
剑指 Offer 67. 把字符串转换成整数 剑指 Offer 67. 把字符串转换成整数
剑指 Offer 67. 把字符串转换成整数 解题思路 代码 解题思路越界判断: 代码class Solution { public int strToInt(String str) { char[] c
2021-03-10
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 解题思路 代码 解题思路 本题用 递归 这题有三个大情况: ①p,q都在以root为根的树中,返回p,q的最近公共祖先 ②p,q都不
2021-03-10
剑指 Offer 68 - II. 二叉树的最近公共祖先 剑指 Offer 68 - II. 二叉树的最近公共祖先
剑指 Offer 68 - II. 二叉树的最近公共祖先 解题思路 代码 解题思路和剑指 Offer 68 \- I. 二叉搜索树的最近公共祖先思路一样 代码/** * Definition for a binary tree no
2021-03-10
4 / 21