classSolution: defsearch(self, nums: List[int], target: int) -> int: l, r, m = 0, len(nums)-1, len(nums)//2 while l <= r: m = (r+l)//2 if nums[m] == target: return m else: if nums[m] < target: l = m + 1 else: r = m - 1 return -1
27.移除元素
1 2 3 4 5 6 7 8 9 10 11 12
classSolution: defremoveElement(self, nums: List[int], val: int) -> int: iflen(nums) == 0: return0 s, f = 0, 0 while f < len(nums): # 快指针把非val丢过来 if nums[f] != val: nums[s] = nums[f] s += 1 f += 1 return s
977.有序数组的平方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
classSolution: defsortedSquares(self, nums: List[int]) -> List[int]: length = len(nums) ans = [0] * length l, r, addp = 0, length-1, length-1 while l <= r: l2 = nums[l] * nums[l] r2 = nums[r] * nums[r] if l2 > r2: ans[addp] = l2 l += 1 else: ans[addp] = r2 r -= 1 addp -= 1 return ans
209.长度最小的子数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14
classSolution: defminSubArrayLen(self, target: int, nums: List[int]) -> int: minsubl = 1e6 s, f = 0, 0 sumfs = 0 for f inrange(len(nums)): sumfs += nums[f] while sumfs >= target: subl = f - s +1 if subl < minsubl: minsubl = subl sumfs -= nums[s] s += 1 return minsubl if minsubl != 1e6else0