leetcode刷题总结651-700

652. 寻找重复的子树

  描述:

    

 

 

   思路:递归对以每个节点为根进行序列化,存储hahmap。当遍历到某个节点发现个数==2。添加。

654. 最大二叉树

  描述:

    

 

 

   思路:递归。找最大的树。将左边一半递归返回作为左子树。右边一半递归返回作为右子树。

655. 输出二叉树

  描述:

    

 

 

   思路:先递归找高度。然后定义一个矩阵,高度*(2^高度-1)然后开始填充。空为"",划分。

658. 找到 K 个最接近的元素

  描述:

    

 

 

   思路:二分,找到最接近这个数字的下表。然后从index-t-1~~index+t-1开始缩小范围。

659. 分割数组为连续子序列

  描述:

      

 

 

   思路:贪心。尽可能取最长的。

662. 二叉树最大宽度

  描述:

    

 

 

   思路:广度优先。维护一个left,每次开始一个新的高度,更新left.。然后出队列更新max_。插入队列的时候,要插入节点不为空的情况下,包含位置深度信息。

665. 非递减数列

  描述:

    

 

 

   思路:某个元素小于后面一个 continue。。当大于后面一个,需要判断后面一个和这个元素的前一个大小。然后修改。记录fix个数。fix>1 false;

      4,2,3

      -1,4,2,3

      2,3,3,2,4

 

667. 优美的排列 II

  描述:

    

 

 

   思路:排序。k=1就是排序后

    

    若n=8初始状态
      1 2 3 4 5 6 7 8
      k=1~~~~~~~~         | 1 2 3 4 5 6 7 8 (不翻转,直接返回)
      k=2~~~~~~~~         1 | 8 7 6 5 4 3 2
      k=3~~~~~~~~         1 8 | 2 3 4 5 6 7
      k=4~~~~~~~~         1 8 2 | 7 6 5 4 3

668. 乘法表中第k小的数

  描述:
    

 

 

   思路:二分。然后查找mid下满足小于Mid的个数  和k做对比,决定low=high  right=high

669. 修剪二叉搜索树

  描述:
    

 

 

   思路:根节点小于L,只修建右子树。 如果在之间,递归。

670. 最大交换

  描述:

    

 

 

   思路:排序。然后从高位到地位找第一个不同。将其交换。(如果高位中出现了两次,换最低位的)

671. 二叉树中第二小的节点

  描述:
    

 

 

   思路:递归。注意此题有很多条件,这些条件保证根是最小的。然后遇到比根大的返回,左子树右子树返回的值取最小。

673. 最长递增子序列的个数

  描述:
    

 

 

   思路:动态规划。维护一个dp[i]表示当前前i下的最长子序列的长度。count[i]表示当前i下的最长子序列的个数。N^2.

678. 有效的括号字符串

  描述:
    

 

 

   思路:递归。每次维护一个count(表示左括号比右括号多余的个数)<0直接flase.分别对*的三种情况递归结果或。

680. 验证回文字符串 Ⅱ

  描述:

    

 

 

   思路:双指针。不一样的话,分情况改变左指针或者右指针。

686. 重复叠加字符串匹配

  描述:

    

 

 

   思路:终止长度即B.length + A.length * 2

      

 

 

687. 最长同值路径

  描述:

    

 

 

   思路:递归。如果根节点等于左子树 或者右子树,或者都等于进行讨论。当某一个节点位空,返回0.

688. “马”在棋盘上的概率

  描述:
    

 

   思路:递归。针对每一个情况,返回的它概率。当越界,直接0.最后相加除以8.

692. 前K个高频单词

  描述:
    

 

   思路:先统计次数,然后优先队列维护k个。设定优先队列排序的规则。

695. 岛屿的最大面积

  描述:
    

 

   思路:循环找1的位置,然后开始深度优先+visited.

696. 计数二进制子串

  描述:
    

 

   思路:统计groups.比如实例1就是2222.然后窗口找最小累加。

697. 数组的度

  描述:

    

 

   思路:先统计,然后双指针缩小范围。

698. 划分为k个相等的子集

  描述:
    

 

   思路:如果均分不能或者最大大于均分直接false/。然后递归回溯。控制循环的次序i,是否已经访问visired,tartget,current。k.。

 

posted @ 2020-07-16 13:59  _Meditation  阅读(162)  评论(0编辑  收藏  举报