Leetcode刷题第一天-二分查找

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

 

69. x 的平方根 - 力扣(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

 35. 搜索插入位置 - 力扣(LeetCode)

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
        

 

posted @ 2024-12-27 16:46  小小小茹茹  阅读(25)  评论(0)    收藏  举报