lcp359
判别首字母缩略词

方法一:暴力
1 | |
k-avoiding 数组的最小总和

方法一:HashSet
1 | |
销售利润最大化

方法一:线性DP
相似题目
2008. 出租车的最大盈利(和本题几乎一样)
1235. 规划兼职工作(数据范围更大的情况,我的题解)
1751. 最多可以参加的会议数目 II(区间个数限制)
1 | |
方法二:二分 + DP
1 | |
找出最长等值子数组

方法一:滑动窗口 同向双指针
将每个值的下标存到List中,例如对于nums = [1,3,2,3,1,3], k = 3
list[1]: [0, 4]
list[2] : [4]
list[3]: [1, 3, 5]
枚举每个list,即把元素替换成1或2或3,例如枚举list[3]: [1, 3, 5],l = 0, r = 1时,nums数组有list.get(r) - list.get(0) + 1 = 3 - 1 + 1 = 3个数:[3,2,3],这个子数组中有r - l + 1 = 1 - 0 + 1 = 2个3,所以需要删除3 - 2 = 1个数
当需要删除的数大于k时,将左端点右移,直到满足需要删除的元素小于等于k
1 | |
lcp359
https://leopol1d.github.io/2023/08/20/lcp359/