Posted on 2023-02-07 18:32
Uriel 阅读(35)
评论(0) 编辑 收藏 引用 所属分类:
闲来无事重切Leet Code 、
游标.移动窗口
有一列fruit,每个fruit有一个label,fruit[i],有两个篮子,每个篮子只能取相同的fruit,问连续最多可以取多少fruit
sliding window+Counter的又一应用
1 #904
2 #Runtime: 932 ms (Beats 33.9%)
3 #Memory: 19.1 MB (Beats 84.36%)
4
5 class Solution(object):
6 def totalFruit(self, fruits):
7 """
8 :type fruits: List[int]
9 :rtype: int
10 """
11 cur_fruit = Counter()
12 ans, l = 0, 0
13 for r in range(len(fruits)):
14 cur_fruit[fruits[r]] += 1
15 if len(cur_fruit) > 2:
16 cur_fruit[fruits[l]] -= 1
17 if cur_fruit[fruits[l]] == 0:
18 cur_fruit.pop(fruits[l])
19 l += 1
20 ans = max(ans, r - l + 1)
21 return ans