[1], [3], [4], [1,3], [3,4] , [1,3,4]
,你需要返回 6。(1 + n) * n / 2
,其中 n 数组长度。[1], [3], [4], [1,3], [3,4] , [1,3,4]
,不大于 3 的子数组有 [1], [3], [1,3]
,那么 [1,3,4] 不大于 3 的子数组个数就是 3。 实现函数 atMostK(k, nums)。[1], [3], [4], [1,3], [3,4] , [1,3,4]
,子数组最大值刚好是 3 的子数组有 [3], [1,3]
,那么 [1,3,4] 子数组最大值刚好是 3 的子数组个数就是 2。实现函数 exactK(k, nums)。小于等于 10 的区域
减去 小于 5 的区域
就是 大于等于 5 且小于等于 10 的区域
。为了减少判断, 我这里用了一个黑科技, p 前面加了个^
。
cac
会被计算为 3,实际上应该是 2。根本原因在于 c 被错误地计算了两次。因此一个简单的思路就是用 set 记录一下访问过的子字符串即可。比如:关键字是:最长
代码是不是很像
set 是不行了的。 因此我们不但需要知道几个数字在窗口, 我们还要知道每个数字出现的次数,这样才可以使用滑动窗口优化时间复杂度。
904. 水果成篮
一样。实际上和所有的滑动窗口题目都差不多。
1.拼车 是这道题的换皮题, 思路一模一样。