diff --git "a/0362.\346\225\262\345\207\273\350\256\241\346\225\260\345\231\250/0362-\346\225\262\345\207\273\350\256\241\346\225\260\345\231\250.py" "b/0362.\346\225\262\345\207\273\350\256\241\346\225\260\345\231\250/0362-\346\225\262\345\207\273\350\256\241\346\225\260\345\231\250.py" new file mode 100644 index 0000000..6fdfdb2 --- /dev/null +++ "b/0362.\346\225\262\345\207\273\350\256\241\346\225\260\345\231\250/0362-\346\225\262\345\207\273\350\256\241\346\225\260\345\231\250.py" @@ -0,0 +1,35 @@ +from collections import deque +class HitCounter(object): + + def __init__(self): + """ + Initialize your data structure here. + """ + self.queue = deque() + + def hit(self, timestamp): + """ + Record a hit. + @param timestamp - The current timestamp (in seconds granularity). + :type timestamp: int + :rtype: None + """ + self.queue.append(timestamp) + + def getHits(self, timestamp): + """ + Return the number of hits in the past 5 minutes. + @param timestamp - The current timestamp (in seconds granularity). + :type timestamp: int + :rtype: int + """ + while self.queue and timestamp - self.queue[0] > 299: + self.queue.popleft() + return len(self.queue) + + + +# Your HitCounter object will be instantiated and called as such: +# obj = HitCounter() +# obj.hit(timestamp) +# param_2 = obj.getHits(timestamp) \ No newline at end of file diff --git "a/5023.\345\275\274\346\255\244\347\206\237\350\257\206\347\232\204\346\234\200\346\227\251\346\227\266\351\227\264/5023-\345\275\274\346\255\244\347\206\237\350\257\206\347\232\204\346\234\200\346\227\251\346\227\266\351\227\264.py" "b/5023.\345\275\274\346\255\244\347\206\237\350\257\206\347\232\204\346\234\200\346\227\251\346\227\266\351\227\264/5023-\345\275\274\346\255\244\347\206\237\350\257\206\347\232\204\346\234\200\346\227\251\346\227\266\351\227\264.py" new file mode 100644 index 0000000..e0ebb78 --- /dev/null +++ "b/5023.\345\275\274\346\255\244\347\206\237\350\257\206\347\232\204\346\234\200\346\227\251\346\227\266\351\227\264/5023-\345\275\274\346\255\244\347\206\237\350\257\206\347\232\204\346\234\200\346\227\251\346\227\266\351\227\264.py" @@ -0,0 +1,50 @@ +class UnionFindSet(object): + def __init__(self, n): + self.roots = [i for i in range(n)] + self.rank = [0 for i in range(n)] + self.count = 0 + + def find(self, member): + tmp = [] + while member != self.roots[member]: + tmp.append(member) + member = self.roots[member] + for root in tmp: + self.roots[root] = member + return member + + def union(self, p, q): + parentP = self.find(p) + parentQ = self.find(q) + if parentP != parentQ: + if self.rank[parentP] > self.rank[parentQ]: + self.roots[parentQ] = parentP + elif self.rank[parentP] < self.rank[parentQ]: + self.roots[parentP] = parentQ + else: + self.roots[parentQ] = parentP + self.rank[parentP] -= 1 + self.count -= 1 + + def check(self): + print self.roots + flag = self.find(self.roots[0]) + for i in self.roots: + if self.find(i) != flag: + return False + return True + +class Solution(object): + def earliestAcq(self, logs, N): + """ + :type logs: List[List[int]] + :type N: int + :rtype: int + """ + logs = sorted(logs, key = lambda x:x[0]) + ufs = UnionFindSet(N) + for time, x, y in logs: + ufs.union(x, y) + if ufs.check(): + return time + return -1 \ No newline at end of file