[算法] 数组
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=0right=len(nums)-1while left<=right:middle=left+(right-left)//2if nums[middle]>target:right=middle-1elif nums[middle]<target:left=middle+1else:return middlereturn -1
前闭后开
class Solution:def search(self, nums: List[int], target: int) -> int:# 前闭后开left=0right=len(nums)while left<right:middle=left+(right-left)//2if nums[middle]>target:right=middleelif nums[middle]<target:left=middle+1else:return middlereturn -1
2 移除元素
. - 力扣(LeetCode)
双指针法
class Solution:def removeElement(self, nums: List[int], val: int) -> int:# 快慢指针fast=0# 慢指针,用来指出删除后的列表slow=0size=len(nums)while fast<size:if nums[fast]!=val:nums[slow]=nums[fast]slow+=1fast+=1return slow
3 有序数组的平方
双指针法
. - 力扣(LeetCode)
class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:i=0j=len(nums)-1k=len(nums)-1result=[0]*len(nums)while i<=j:if nums[i]**2>nums[j]**2:result[k]=nums[i]**2i+=1else:result[k]=nums[j]**2j-=1k-=1return result
4 长度最小的子数组
. - 力扣(LeetCode)