leetcode刷题总结401-450

401. 二进制手表

  描述:

    二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。

    每个 LED 代表一个 0 或 1,最低位在右侧。

    

   思路:递归回溯法。

402. 移掉K位数字

  描述:

    

   思路:维护一个栈。来一个数入栈,当栈顶元素大于准备进栈的,那么弹出栈顶。

403. 青蛙过河

  描述:

    

   思路:动态规划。维护一个map<石头的下表,当前可以跳的步数>

406. 根据身高重建队列

  描述:

    

   思路:贪心算法。当两个身高相同,拿第二个座标判断。当身高不同,小个在后。然后把这个数组进行插入排序,把第二个坐标作为下表插入list。

407. 接雨水 II

  描述:

    

   思路:从外围往里进。遇到低于自己的开始计算。

410. 分割数组的最大值

  描述:

    

   思路: 动态规划即可。dp[nums.leng][m]。复杂度O(n*n*m);;;二分。【最大的数,所有数之和】进行mid计算。mid就是我们划分的输出,如果按照输出划分出来的个数小于m,证明我们划分的太大了,需要缩小值,那么right=mid-1,继续划分。知道left=<right。返回left即可。

 413. 等差数列划分

  描述:

    

   思路:动态规划。具有重叠子问题。定dp[i]为结尾i的子序列个数。状态转移dp[i]=dp[i-1]+1如果公差相等。用一个result去累加每个dp。

416. 分割等和子集

  描述:

    

   思路:计算总和。target=sum/2。如果sum%2=1直接false。动态规划。如果数组中的某些数字能够使target等于这些,那么就可以。

417. 太平洋大西洋水流问题

  描述:

    

   思路:递归DFS。

421. 数组中两个数的最大异或值

  描述:

    

   思路:将这些数字用二进制标志。然后从高位到低位用前缀树存储。异或要求不同才能为1.然后从根节点进行找分叉点。

423. 从英文中重建数字

  描述:

    

   思路:可以通过统计完成。zero。 出现z为0.

424. 替换后的最长重复字符

  描述:

    

   思路:滑动窗口。初始1,逐渐增大,然后往后移。容忍k个不同。

430. 扁平化多级双向链表

  描述:

     

   思路:栈。先判断child是否为空,空就继续往后走。逐渐压栈。输出。

435. 无重叠区间

  描述:

    

   思路:按照第二维度进行排序。(贪心,最早结束越好。)

438. 找到字符串中所有字母异位词

  描述:

    

   思路:滑动窗口+hashmap.

440. 字典序的第K小数字

  描述:

    

   思路:通过前缀树的思路。记录每个节点的所有子节点个数。

442. 数组中重复的数据

  描述:

    

   思路:遇到一个数字,对index=这个数字的数字加n,然后遍历完后哪个位置>2n,就证明出现两次。

443. 压缩字符串

  描述:

    

   思路:双指针。

445. 两数相加 II

  描述:

    

   思路:反转;;;栈。

446. 等差数列划分 II - 子序列

  描述:

    

   思路:动态规划。dp[i下表][d公差]的个数。状态转移是每个dp[i]下的每个公差计数。

447. 回旋镖的数量

  描述:

    

   思路:对于每个节点统计对于其他节点的距离。

448. 找到所有数组中消失的数字  

   描述:

    

   思路:遇到一个数字,对index=这个数字的数字加n,然后遍历完后哪个位置<n,就证明没有出现。

450. 删除二叉搜索树中的节点

  思路:删除节点的左子树的最右下节点////右子树的最坐下节点。  

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