代码随想录算法训练营day1|704.二分查找、27.移除元素、977.有序数组的平方
学习资料:https://programmercarl.com/数组理论基础.html
理解:
双指针可以同时获取一个数组的两个位置的值
二分查找:根据区间范围(左闭右闭、左闭右开)来判断左右指针比较方式
刷题记录:
704.二分查找(左闭右闭则<=,左右指针,middle=left+(right-left)//2, 因为考虑了等号情况所以下一步left=middle+1或right=middle-1)
点击查看代码
class Solution(object):
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
left, right = 0, len(nums)-1
while left <= right:
middle=left + (right-left)//2
if nums[middle]>target:
right=middle-1
elif nums[middle]<target:
left = middle + 1
else:
return middle
return -1
点击查看代码
class Solution(object):
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
soft=0
slow=0
size=len(nums)
while soft < size:
if nums[soft] != val:
nums[slow] = nums[soft]
slow += 1
soft += 1
return slow
点击查看代码
class Solution(object):
def sortedSquares(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
left=0
right = len(nums)-1
k=len(nums)-1
result=[0]*len(nums)
while left <= right:
if nums[left]**2 > nums[right]**2:
result[k]=nums[left]**2
left += 1
else:
result[k]=nums[right]**2
right -= 1
k -= 1
return result
浙公网安备 33010602011771号