用户工具

站点工具


算法题型分类

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
算法题型分类 [2020/11/01 13: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皇后||
  
行 168: 行 168:
 ^ leetcode序号      ^ 题目       ^ 思路要点 ^ ^ leetcode序号      ^ 题目       ^ 思路要点 ^
 |递归||| |递归|||
-|104|树的高度|| +|104|树的高度|Math.max(leftDepth, rightDepth) + 1
-|110|平衡树|| +|110|平衡树|还是求最大深度,多了一次比较和状态记录
-|543|两节点的最长路径|| +|543|两节点的最长路径|等于两子树的最大深度之和
-|226|反转树|| +|226|反转树|反转左右子树;交换位置
-|617|归并两棵树|| +|617|归并两棵树|
-|112|判断路径和是否等于一个数|| +|112|判断路径和是否等于一个数|
-|437|统计路径和等于一个数的路径数量|| +|437|统计路径和等于一个数的路径数量|pathSumStartsWithRoot(root, sum) + pathSum(root.left, sum) + pathSum(root.right, sum)
-|572|子树|| +|572|子树|<code>isSubtreeStartsWithRoot(s, t) || isSubtree(s.left, t) || isSubtree(s.right, t)</code>注意子树的定义
-|101|树的对称|| +|101|树的对称|isMirror(root.left, root.right)
-|111|最小路径|| +|111|最小路径|当 root 节点左右孩子有一个为空时,返回不为空的孩子节点的深度;当 root 节点左右孩子都不为空时,返回左右孩子较小深度的节点值
-|404|统计左叶子节点的和||+|404|统计左叶子节点的和||
 |687|相同节点值的最大路径长度|| |687|相同节点值的最大路径长度||
 |337|间隔遍历|| |337|间隔遍历||
行 211: 行 211:
 |20|用栈实现括号匹配|左括号入栈,右括号出栈| |20|用栈实现括号匹配|左括号入栈,右括号出栈|
 |739|数组中元素与下一个比它大的元素之间的距离|一次遍历。用栈记录已经遇到的索引,一旦遇到更大的值,就持续出栈,计算结果| |739|数组中元素与下一个比它大的元素之间的距离|一次遍历。用栈记录已经遇到的索引,一旦遇到更大的值,就持续出栈,计算结果|
-|503|循环数组中比当前元素大的下一个元素|int i = 0; i < n * 2; i++|+|503|循环数组中比当前元素大的下一个元素|int i = 0; i < n * 2; i++。只在 i<n 时入栈|
  
 ==== 哈希表 ==== ==== 哈希表 ====
 ^ leetcode序号      ^ 题目       ^ 思路要点 ^ ^ leetcode序号      ^ 题目       ^ 思路要点 ^
-|1|数组中两个数的和为给定值|| +|1|数组中两个数的和为给定值|<needNum:currentIndex>
-|217|判断数组是否含有重复元素|| +|217|判断数组是否含有重复元素|多种算法,略
-|594|最长和谐序列|| +|594|最长和谐序列|构造freqMap,遍历此map
-|128|最长连续序列||+|128|最长连续序列|<num, length>;forward 递归计算从每个num出发的length|
  
 ==== 字符串 ==== ==== 字符串 ====
算法题型分类.1604209814.txt.gz · 最后更改: 2020/11/01 13:50 由 plough

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki