• 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.。

  • 相关阅读:
    class类文件具有错误的版本52.0,应为50.0
    git learn.
    git diff 命令用法
    vlan
    bridge
    Packet flow in l2(receive and transmit)
    /proc/uptime详解
    linux 内核数据结构之红黑树.
    linux 内核数据结构之 avl树.
    python学习.
  • 原文地址:https://www.cnblogs.com/dhName/p/13322295.html
Copyright © 2020-2023  润新知