代码随想录算法第一天| 704. 二分查找、27. 移除元素
704. 二分查找
class Solution:
def search(self, nums: List[int], target: int) -> int: # type: ignore
## 左闭右闭写法
# left, right = 0, len(nums)-1 # 左闭右闭区间,所以right为len(nums) - 1
# while left <= right:
# mid = left + (right - left) // 2 # 防止溢出 等同于(left + right)//2
# if nums[mid] > target:
# right = mid - 1
# elif nums[mid] < target:
# left = mid + 1
# else:
# return mid
# return -1
## 左闭右开写法
left, right = 0, len(nums) # 左闭右开区间为[left, right), 所以right为len(nums)
while left < right:
mid = left + (right - left) // 2
if nums[mid] > target:
right = mid
elif nums[mid] < target:
left = mid+1
else:
return mid
return -1
27. 移除元素
class Solution:
def removeElement(self, nums: List[int], val: int) -> int: # type: ignore
# 双指针解法
slow = 0
for fast in range(len(nums)):
if nums[fast] != val:
nums[slow] = nums[fast]
slow += 1
return slow