Posted on 2023-02-07 18:32
Uriel 閱讀(48)
評論(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