diff --git a/Python/combinationSum.py b/Python/combinationSum.py new file mode 100644 index 00000000..4021efac --- /dev/null +++ b/Python/combinationSum.py @@ -0,0 +1,14 @@ +class Solution(object): + def combinationSum(self, candidates, target): + ret = [] + self.dfs(candidates, target, [], ret) + return ret + + def dfs(self, nums, target, path, ret): + if target < 0: + return + if target == 0: + ret.append(path) + return + for i in range(len(nums)): + self.dfs(nums[i:], target-nums[i], path+[nums[i]], ret) diff --git a/Python/recentCOunter.py b/Python/recentCOunter.py new file mode 100644 index 00000000..06aabb44 --- /dev/null +++ b/Python/recentCOunter.py @@ -0,0 +1,10 @@ +class RecentCounter: + + def __init__(self): + self.p = collections.deque() + + def ping(self, t): + self.p.append(t) + while self.p[0] < t - 3000: + self.p.popleft() + return len(self.p) diff --git a/Python/rotateList.py b/Python/rotateList.py new file mode 100644 index 00000000..8f1bd277 --- /dev/null +++ b/Python/rotateList.py @@ -0,0 +1,43 @@ +class Solution(object): + def rotateRight(self, head, k): + """ + :type head: ListNode + :type k: int + :rtype: ListNode + """ + if not head: + return None + + if head.next == None: + return head + + pointer = head + length = 1 + + while pointer.next: + pointer = pointer.next + length += 1 + + rotateTimes = k%length + + if k == 0 or rotateTimes == 0: + return head + + fastPointer = head + slowPointer = head + + for a in range (rotateTimes): + fastPointer = fastPointer.next + + + while fastPointer.next: + slowPointer = slowPointer.next + fastPointer = fastPointer.next + + temp = slowPointer.next + + slowPointer.next = None + fastPointer.next = head + head = temp + + return head