Leetcode:704. 二分查找
题目链接:704. 二分查找
Python解题代码如下:双指针法
class Solution:
def search(self, nums: List[int], target: int) -> int:
left,right=0,len(nums)-1
while left<=right:
mid = left+right-left//2
if target<nums[mid]:
right=mid-1
elif target>nums[mid]:
left=mid+1
else:
return mid
return -1
个人错误经验与教训:
1.没有写left两边都在变
2.mid没有+1导致循环超时思路应该是后一个新值
Leetcode:27. 移除元素
题目链接:27. 移除元素
Python解题代码如下:双指针法
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
slow = 0
fast = 0
size = len(nums)
for i in range(size):
if nums[fast]!=val:
nums[slow]=nums[fast]
slow+=1
fast+=1
return slow
理清思路以后就比较简单,思路清晰很关键
或暴力解法
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
l,i = 0,len(nums)
while l<i:
if nums[l] == val:
for j in range(l+1,i):
nums[j-1] = nums[j]
i-=1
l-=1
l+=1
return i
个人错误:
没有写l-=1 原因:因为已经删除了元素###被替换了所以后一个元素替换到当前位置,位置不变
因循环查值外有l+1所以不改变-1
坚持!
坚持!
坚持就是胜利!!!