leetcode刷题总结601-650
606. 根据二叉树创建字符串
描述:
思路:缕清关系,写出递归方程式。
611. 有效三角形的个数
描述:
思路:排序。固定两个元素,然后二分找满足的最小边。
621. 任务调度器
描述:
思路:先统计每个字符的个数。然后贪心的去选择前n高的去运行。
623. 在二叉树中增加一行
描述:
思路:广度优先找到第d-1层。然后开始插入结点。
629. K个逆序对数组
描述:
思路:动态规划。当增加一个元素的时候,dp[i][k]表示给定I(n),有K个逆序对的个数。dp[i][k]=dp[i-1][k]+dp[i-1][k-1]+.....dp[i-1][k-i+1]
630. 课程表 III
描述:
思路:贪心选deadlines最先截至的,如果遇到冲突了,看当前的持续时间和已经存储的持续时间的最大值谁大,再决定是否弹出大顶堆的头。
632. 最小区间
描述:
思路:
对每个树存一个《数字,所属数组》进行排序,然后滑动窗口。
636. 函数的独占时间
描述:
思路:栈。
638. 大礼包
描述:
思路:递归。递归的时候先计算本来原价多少,然后递归min.min的时候每次遍历特价时候,先去克隆一个需要买的数量,然后用这个克隆去减去特价数量后递归最小值。
639. 解码方法 2
描述;
思路:动态规划。需要考虑前一个元素为*,前2个元素为*等等情况考虑细致。
640. 求解方程
描述:
思路:分隔。求x系数和常熟。
646. 最长数对链
描述:
思路:动态规划。dp[i]表示以pair[i]结尾的最长连的长度。dp[i]=max(dp[i],dp[j]+1)。dp[j][1]<dp[i][0]
647. 回文子串
描述:
思路:动态规划。dp[i][j]字符串从i-j是否为回文。一个字符是,两个字符判断相等,三个以上dp[i][j]=dp[i+1][j-1]如果相等。否则直接flase.
648. 单词替换
描述:
思路:词典树。
649. Dota2 参议院
描述:
思路:队列。先统计次数。然后遇到一个R/D,将后面的D/R去掉,然后再出队列,入队列。知道某一个势力数量为0.
650. 只有两个键的键盘
描述:
思路:数学的方法。dp[8]=dp[4]+dp[2]