1 二分查找
. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/binary-search/submissions/570732311/
前闭后闭
class Solution:
def search(self, nums: List[int], target: int) -> int:
# 前闭后闭
left=0
right=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:
def search(self, nums: List[int], target: int) -> int:
# 前闭后开
left=0
right=len(nums)
while left<right:
middle=left+(right-left)//2
if nums[middle]>target:
right=middle
elif nums[middle]<target:
left=middle+1
else:
return middle
return -1
2 移除元素
. - 力扣(LeetCode)
双指针法
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
# 快慢指针
fast=0
# 慢指针,用来指出删除后的列表
slow=0
size=len(nums)
while fast<size:
if nums[fast]!=val:
nums[slow]=nums[fast]
slow+=1
fast+=1
return slow
3 有序数组的平方
双指针法
. - 力扣(LeetCode)
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
i=0
j=len(nums)-1
k=len(nums)-1
result=[0]*len(nums)
while i<=j:
if nums[i]**2>nums[j]**2:
result[k]=nums[i]**2
i+=1
else:
result[k]=nums[j]**2
j-=1
k-=1
return result
4 长度最小的子数组
. - 力扣(LeetCode)