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的最大值。

517. 超级洗衣机

  描述:

    

   思路:先均分找目标值。然后动态规划。最少的操作步骤为“(目标值和当当前元素的差值)和(所有目标值和位置元素的差值的前缀和)”

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(节点的间隔数量)

546. 移除盒子

  描述:

    

   思路:dp[i][k][r]表示从i-k的序列且k后有r个同num[k]相同的序列的最大积分。

547. 朋友圈

  描述:

    

   思路:图,求图的联通的数量。深度优先。

   

原文地址:https://www.cnblogs.com/dhName/p/13292628.html