704 二分查找
感觉利用左开右闭区间更容易理解,编程过程中遇到mid溢出问题,需要注意
class Solution:
def search(self, nums: List[int], target: int) -> int:
left=0
right=len(nums)
while left<right:
middle=(left+right)//2(会有Middle溢出问题,改为left+(right-left)//2
if target<nums[middle]:
right=middle
if target>nums[middle]:
left=middle+1
else:
return middle
return -1
27题 移除元素
27题
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
fast=0
slow=0
while fast<len(nums):
if nums[fast]!=val:
nums[slow]=nums[fast]
slow+=1
else:
fast+=1(有错误,无论什么情况,fast都要加1,因此不应该放到else后面)
return slow
283 移动零
明确需要依靠双指针,但一直在思考利用双指针把0和非0元素调换位置,若fast=0,而fast+1不为0,则 temp=slow,slow=fast,fast=temp ,发觉很麻烦,利用移除0,然后在slowindex后面补齐0,这个思路很简单。