首页 > 其他 > 详细

leetcode1348

时间:2020-02-09 15:32:22      阅读:63      评论:0      收藏:0      [点我收藏+]
 1 import bisect
 2 class TweetCounts:
 3     def __init__(self):
 4         self.records = {}
 5 
 6     def recordTweet(self, tweetName: str, time: int) -> None:
 7         if tweetName not in self.records:
 8             self.records[tweetName] =  [time]
 9         else:
10             bisect.insort(self.records[tweetName],time)
11             # self.records[tweetName].append(time)
12 
13     def getTweetCountsPerFrequency(self, freq: str, tweetName: str, startTime: int, endTime: int) -> List[int]:
14         result = []
15         # self.records[tweetName].sort()
16         if tweetName not in self.records:
17             return []
18         else:
19             delta = 0
20             if freq == minute:
21                 delta = 60
22             elif freq == hour:
23                 delta = 60 * 60
24             else:
25                 delta = 60 * 60 * 24
26             i = 0
27             I = (endTime - startTime) // delta + 1
28             while i < I:
29                 start = startTime + delta * i
30                 end = min(startTime + delta * (i + 1),endTime + 1)
31                 left = bisect.bisect_left(self.records[tweetName], start)
32                 right = bisect.bisect_left(self.records[tweetName], end)
33                 count = right - left
34                 result.append(count)
35                 i += 1
36         return result

算法思路:二分查找。

在插入数据的时候,使用插入排序。

在计算区间内符合条件的数值个数的时候,使用两次二分查找。

leetcode1348

原文:https://www.cnblogs.com/asenyang/p/12287086.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!