704. 二分查找
思路:
很简单的二分查找,注意边界条件和退出条件
class Solution:
def search(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums) - 1
while left <= right:
if nums[left] == target:
return left
elif nums[right] == target:
return right
else:
middle = (left + right) // 2
if nums[middle] == target:
return middle
elif nums[middle] > target:
right = middle - 1
else:
left = middle + 1
return -1
参考文章:代码随想录-704.二分查找
27. 移除元素
题目链接:27.移除元素-力扣(LeetCode)
思路:
一开始想到的是暴力求解,直接双循环
后来看了代码随想录的讲解,多了双指针的解法,确实很巧妙
暴力求解:
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
i = 0
length = len(nums)
while i<length:
if nums[i]==val:
for j in range(i+1,length):
nums[j-1]=nums[j]
i-=1
length-=1
i+=1
return length
双指针
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
i = 0
length = 0
while i<len(nums):
if nums[i]!=val:
nums[length]=nums[i]
length += 1
i+=1
return length
参考文章:代码随想录-27. 移除元素