算法题型分类
                差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| 算法题型分类 [2020/10/31 20:50] – [搜索] plough | 算法题型分类 [2020/11/06 02:29] (当前版本) – [搜索] plough | ||
|---|---|---|---|
| 行 66: | 行 66: | ||
| |Backtracing||| | |Backtracing||| | ||
| |17|数字键盘组合|sb.deleteCharAt(pos)| | |17|数字键盘组合|sb.deleteCharAt(pos)| | ||
| - | |93|IP 地址划分|| | + | |93|IP 地址划分|转换为树形问题,剪枝| | 
| - | |79|在矩阵中寻找字符串|| | + | |79|在矩阵中寻找字符串|终止条件用 word.length() == 1| | 
| - | |257|输出二叉树中所有从根到叶子的路径|| | + | |257|输出二叉树中所有从根到叶子的路径|add和remove成对出现;if (root == null) return;| | 
| - | |46|排列|| | + | |46|排列|提前声明一个 visited 数组| | 
| - | |47|含有相同元素求排列|| | + | |47|含有相同元素求排列|先排序,然后在添加一个元素时,判断这个元素是否等于前一个元素,如果等于,并且前一个元素还未访问,那么就跳过这个元素| | 
| |77|组合|| | |77|组合|| | ||
| |39|组合求和|| | |39|组合求和|| | ||
| 行 78: | 行 78: | ||
| |90|含有相同元素求子集|| | |90|含有相同元素求子集|| | ||
| |131|分割字符串使得每个部分都是回文数|| | |131|分割字符串使得每个部分都是回文数|| | ||
| - | |37|数独|| | + | |37|数独|seeNext| | 
| |51|N皇后|| | |51|N皇后|| | ||
| 行 154: | 行 154: | ||
| ==== 链表 ==== | ==== 链表 ==== | ||
| ^ leetcode序号 | ^ leetcode序号 | ||
| - | |160|找出两个链表的交点|| | + | |160|找出两个链表的交点|如果不存在交点,l1 和 l2 会同时为 null,从而退出循环。| | 
| - | |206|链表反转|| | + | |206|链表反转|pre,cur,next;pre = null| | 
| - | |21|归并两个有序的链表|| | + | |21|归并两个有序的链表|归并排序| | 
| - | |83|从有序链表中删除重复节点|| | + | |83|从有序链表中删除重复节点|略| | 
| - | |19|删除链表的倒数第n个节点|| | + | |19|删除链表的倒数第n个节点|双指针| | 
| - | |24|交换链表中的相邻节点|| | + | |24|交换链表中的相邻节点|pre, | 
| - | |445|链表求和|| | + | |445|链表求和|用栈倒序| | 
| - | |234|回文链表|| | + | |234|回文链表|快慢指针切成两半,把后面的反转| | 
| - | |725|分隔链表|| | + | |725|分隔链表|如果链表有N 个结点,则分隔的链表中每个部分中都有n/ | 
| - | |328|链表元素按奇偶聚集|| | + | |328|链表元素按奇偶聚集|分割奇偶链;找到奇数链的尾部;连接两条链| | 
| ==== 树 ==== | ==== 树 ==== | ||
| ^ leetcode序号 | ^ leetcode序号 | ||
| |递归||| | |递归||| | ||
| - | |104|树的高度|| | + | |104|树的高度|Math.max(leftDepth, | 
| - | |110|平衡树|| | + | |110|平衡树|还是求最大深度,多了一次比较和状态记录| | 
| - | |543|两节点的最长路径|| | + | |543|两节点的最长路径|等于两子树的最大深度之和| | 
| - | |226|反转树|| | + | |226|反转树|反转左右子树;交换位置| | 
| - | |617|归并两棵树|| | + | |617|归并两棵树|略| | 
| - | |112|判断路径和是否等于一个数|| | + | |112|判断路径和是否等于一个数|略| | 
| - | |437|统计路径和等于一个数的路径数量|| | + | |437|统计路径和等于一个数的路径数量|pathSumStartsWithRoot(root, | 
| - | |572|子树|| | + | |572|子树|< | 
| - | |101|树的对称|| | + | |101|树的对称|isMirror(root.left, | 
| - | |111|最小路径|| | + | |111|最小路径|当 root 节点左右孩子有一个为空时,返回不为空的孩子节点的深度;当 root 节点左右孩子都不为空时,返回左右孩子较小深度的节点值| | 
| - | |404|统计左叶子节点的和|| | + | |404|统计左叶子节点的和|略| | 
| |687|相同节点值的最大路径长度|| | |687|相同节点值的最大路径长度|| | ||
| |337|间隔遍历|| | |337|间隔遍历|| | ||
| 行 206: | 行 206: | ||
| ==== 栈和队列 ==== | ==== 栈和队列 ==== | ||
| ^ leetcode序号 | ^ leetcode序号 | ||
| - | |232|用栈实现队列|| | + | |232|用栈实现队列|当 sOut 空的时候,一次性把 sIn 加到 sOut 上| | 
| - | |225|用队列实现栈|| | + | |225|用队列实现栈|两个队列;push 的时候,把元素插入临时队列的前面,然后把主队列一一插过去;交换两个队列的名字| | 
| - | |155|最小值栈|| | + | |155|最小值栈|多使用一个minStack,同步更新| | 
| - | |20|用栈实现括号匹配|| | + | |20|用栈实现括号匹配|左括号入栈,右括号出栈| | 
| - | |739|数组中元素与下一个比它大的元素之间的距离|| | + | |739|数组中元素与下一个比它大的元素之间的距离|一次遍历。用栈记录已经遇到的索引,一旦遇到更大的值,就持续出栈,计算结果| | 
| - | |503|循环数组中比当前元素大的下一个元素|| | + | |503|循环数组中比当前元素大的下一个元素|int i = 0; i < n * 2; i++。只在 i<n 时入栈| | 
| ==== 哈希表 ==== | ==== 哈希表 ==== | ||
| ^ leetcode序号 | ^ leetcode序号 | ||
| - | |1|数组中两个数的和为给定值|| | + | |1|数组中两个数的和为给定值|< | 
| - | |217|判断数组是否含有重复元素|| | + | |217|判断数组是否含有重复元素|多种算法,略| | 
| - | |594|最长和谐序列|| | + | |594|最长和谐序列|构造freqMap,遍历此map| | 
| - | |128|最长连续序列|| | + | |128|最长连续序列|<num, length> | 
| ==== 字符串 ==== | ==== 字符串 ==== | ||
算法题型分类.1604148642.txt.gz · 最后更改: 2020/10/31 20:50 由 plough
                
                