leetcode刷题总结351-400
354. 俄罗斯套娃信封问题
描述:
思路:先按照第一个维度排序,第一维度相同时,第二维度降序。然后对第二维度进行最长上升子序列。(第二维度降序是为了避免同长度下的嵌套)
355. 设计推特
描述:
思路:通过一个map来维护一个用户发的推文。(推文对象之间用链表连接)。然后用一个优先队列得出10个最近的。
357. 计算各个位数不同的数字个数
描述:
思路:找规律。一个数有10个,两个有10+9*9;......
363. 矩形区域不超过 K 的最大数值和
描述:
思路:固定左边界列,右边界列往右移动。
365. 水壶问题
描述:
思路:广度优先遍历。通过将当前状态和动作-》下一状态判断。同时记录已经遍历的状态。
367. 有效的完全平方数
描述:
思路:二分。
368. 最大整除子集
描述:
思路:动态规划。dp[i]表示当前结尾的最大整除子集。每次需要往前判断当前元素与前面所有个元素的倍数,同时记录。
371. 两整数之和
描述;
思路:位运算。00 输出0进位0.01/10输出1,进位0.。。。。
372. 超级次方
描述:
思路:阶数右移*上次得数。
373. 查找和最小的K对数字
描述:
思路:两个列表维护当前已经遍历的最后指针和下一个指针。
374. 猜数字大小
375. 猜数字大小 II
描述:
思路:动态规划。dp[i][j]代表当前区间选择的至少钱数。dp[i][i]==0;dp[i][j]=dp[i][k-1]+dp[k+1][j]+k
376. 摆动序列
描述:
思路:动态规划。dp[i]表示当前结尾的数组的长度。同时需要维护一个数组变量表示某个位置期望下一个该上升还是下降。
377. 组合总和 Ⅳ
描述;
思路:动态规划。dp[i]表示tartget=i的数量。dp[i]=dp[i-1]+dp[i-2]+dp[i-3]
378. 有序矩阵中第K小的元素
描述:
思路:二分,最大最小元素。找到小于mid的个数,然后对比。
382. 链表随机节点
描述:
思路:蓄水池抽样。第i个乘以1/i,然后前面的乘以(i-1)/i。
386. 字典序排数
描述:
给定一个整数 n, 返回从 1 到 n 的字典顺序。
例如,
给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。
思路:递归。
392. 判断子序列
描述:
示例 1:
s = "abc", t = "ahbgdc"
返回 true.
示例 2:
s = "axc", t = "ahbgdc"
思路:双指针。
394. 字符串解码
描述:
思路:栈。
395. 至少有K个重复字符的最长子串
描述:
思路:先hashmap统计次数。将次数不满足的字符进行拆分,在进行分治。
397. 整数替换
描述:
399. 除法求值
描述:
思路:构建带权路径的图。然后求这两个点之间的权重。
400. 第N个数字
思路:
思路:找规律