Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594
有一列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

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理