704.二分查找
题解:代码随想录
思路
我习惯写闭区间二分,闭区间意味着区间内都是可能的解,当mid是解时,更新left和mid的方式是对称的
代码
class Solution:
def search(self, nums: List[int], target: int) -> int:
l = 0
r = len(nums) - 1
while l <= r:
mid = (l + r) >> 1
if nums[mid] < target:
l = mid + 1
elif nums[mid] > target:
r = mid - 1
elif nums[mid] == target:
return mid
return -1
27.移除元素
题解:代码随想录
思路
不会写,第一次用双指针写法,快指针用于遍历每个列表元素,当指针指到val时,快指针向前,慢指针不动。在非val值时,快指针将元素值传递给慢指针所在位置。慢指针相当于在非val值时复制快指针的元素
代码
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
977.有序数组平方
思路
遍历每个元素的平方,使用sort方法重新排序,很简单
代码
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
sqr=[]
for i in nums:
sqr.append(i**2)
sqr.sort()
return sqr