1.二分查找
class Solution:
def search(self, nums: List[int], target: int) -> int:
left,right=0,len(nums)-1
while left<=right:
mid=(left+right)//2
if nums[mid]==target:
return mid
elif nums[mid]<target:
left=mid+1
else:
right=mid-1
return -1
采用的是统计的思路
class Solution:
def targetIndices(self, nums: List[int], target: int) -> List[int]:
less_cnt = 0
equal_cnt = 0
for i in nums:
if i<target:
less_cnt+=1
elif i==target:
equal_cnt+=1
res=[]
for i in range(equal_cnt):
res.append(less_cnt+i)
return res
3.寻找重复数
二分搜索
class Solution:
def findDuplicate(self, nums: List[int]) -> int:
left,right=1,len(nums)-1
while(left<right):
mid=(left+right)//2
cnt=0
for i in nums:
if i<=mid:
cnt+=1
if cnt>mid:
right=mid
else:
left = mid+1
return left
4........!!!!!///待续