写在前面
本人因准备秋招,决定从2024.6.5日起开始正式刷题。之前虽然也陆续刷过,但总是比较零散(力扣Top100只刷了30道),这次真的拖不起了,所以开此贴,请大家监督我。
本贴主要以记录刷题思路为主,不能直接运行,是一种不太标准的伪代码。我用python编程。
6.5(Day1)完成情况
看完视频就对于两题解决思路比较清楚了,但也有些细节需要debug
二分查找704
左闭右闭:
left=0,right=n-1
while(left<=right): #极端情况left=right
mid = (left+right)/2
if list[mid] < target:
left = mid+1
elif list[mid] > target:
right = mid -1
else:
return mid
return -1
左闭右开:
left=0,right=n
while(left<right):
mid = (left+right)/2
if list[mid] < target:
left = mid + 1
elif list[mid] > target:
right = mid
else:
return mid
return -1
移除数组27
暴力法(复杂度N^2)
i=0,n=length
while i < n:
if nums[i]==target:
for j in range(i+1,n):
nums[j-1]=nums[j]
n-=1
i-=1 #这一步是不容易想到的
i+=1
return i
快慢指针法
fast=0,slow=0
while fast<length:
if nums[fast]!=target: #如果fast一直没找到target,就会带着slow一直前进;如果找到了,slow就会停下来,等fast继续找到一个能覆盖slow的元素
nums[slow]=nums[fast]
slow+=1
fast+=1
return slow