leetcode刷题总结501-550
501. 二叉搜索树中的众数
描述:
思路:中序遍历。
503. 下一个更大元素 II
描述:
思路:单调栈。
506. 相对名次
描述:
思路:先拍戏。再替换。
508. 出现次数最多的子树元素和
描述:
思路:后序遍历。否则叶子节点就遍历了很多次。通过hash存《和,次数》
513. 找树左下角的值
描述:
给定一个二叉树,在树的最后一行找到最左边的值。
思路:BFS.
515. 在每个树行中找最大值
描述:
思路:广度优先。
516. 最长回文子序列
描述:
思路:动态规划。dp[i][j]表示i~j的最长回文子序列。当i==j的时候,等于dp[i+1][j-1]+2。当不相等的时候,等于i+1,j i~j-1的最大值。
518. 零钱兑换 II
描述:
思路:双重循环。分别为0-amount和coins的种类。dp[i]=dp[i]+dp[i-coin]
521. 最长特殊序列 Ⅰ
描述:
思路:长度相等,判断字符串是否相等。否则返回最长。
522. 最长特殊序列 II
描述:
思路:按照长度排序,然后看出现次数为1的最长子串。
523. 连续的子数组和
描述:
思路:前缀和对k的余数存hashmap.《余数,index》。当出现了重复的余数,证明之间的为K的倍数。
524. 通过删除字母匹配到字典里最长单词
描述:
思路:先按照长度和字典顺序进行排序。然后从头开始看是否为。。
525. 连续数组
描述:
思路:把0视为-1.然后通过hashmap<前缀和,index>。当重复出现了前缀和,证明之间为0.
526.优美的排列
描述:
思路:回溯。当遇到某个数字在这个位置不符合的直接剪枝。
529. 扫雷游戏
思路:递归遍历深度or广度。
530. 二叉搜索树的最小绝对差
描述;
思路:中序。
532. 数组中的K-diff数对
描述;
思路:排序。
538. 把二叉搜索树转换为累加树
描述
思路:先中序,然后对于每个节点计算后面。。。。
539. 最小时间差。
描述:
思路:统计成分钟,然后排序。
540. 有序数组中的单一元素
描述;
思路;想的是全部异或。有序===》二分。
542. 01 矩阵
描述:
思路:动态规划。
543. 二叉树的直径
描述:
思路:以当前节点为根的二叉树的直径 为 左子树的最大高度+右子树的最大高度+1 (+1表示这条路径上的节点数量) ,然后再-1(节点的间隔数量)
547. 朋友圈
描述:
思路:图,求图的联通的数量。深度优先。