对撞指针
167. 两数之和 II - 输入有序数组
# 时间复杂度为O(n); 空间复杂度为O(1)class Solution: def twoSum(self, numbers, target): i, j = 0, len(numbers)-1 while i < j: if numbers[i] + numbers[j] == target: break elif numbers[i] + numbers[j] < target: i += 1 else: j -= 1 return [i+1, j+1]
快慢指针
142. 环形链表 II
class Solution: def detectCycle(self, head): fast, slow = head, head while fast != None: fast = fast.next if fast == None: break fast = fast.next slow = slow.next if fast == slow: break if fast == None: return None p1, p2 = slow, head while p1 != p2: p1 = p1.next p2 = p2.next return p1