Leetcode刷题第一天-二分查找
哎~~~ 一言难尽。。。前一天还在加班,,,第二天就被通知领礼包。。。这都什么事情呀,算了,刷题吧

class Solution: def mySqrt(self, x: int) -> int: if x<0: return None #左闭右闭区间[0,x] #求算数平方根,a*a=x,所以a<=x/2 #判断x/2的平方和x的大小,确定左右区间 #结束条件:(1)a*a<x and (a+1)*(a+1)>x结果为a #(2)a*a>x and (a-1)*(a-1)>x结果为a-1 #(3)a*a=x left,right=0,x while left<=right: middle=int((left+right)/2) if middle*middle>x: if (middle-1)*(middle-1)<x: return middle-1 right=middle-1 elif middle*middle<x: if (middle+1)*(middle+1)>x: return middle left=middle+1 else: return middle
class Solution: def searchInsert(self, nums: List[int], target: int) -> int: if not nums: return 0 #区间[0,len(nums)) left,right=0,len(nums) while left<right: middle=int((left+right)/2) if nums[middle]>target: right=middle elif nums[middle]<target: left=middle+1 else: return middle return left

浙公网安备 33010602011771号