美文网首页
【LeetCode通关全记录】704. 二分查找

【LeetCode通关全记录】704. 二分查找

作者: NoelleMu | 来源:发表于2021-10-20 21:46 被阅读0次

    【LeetCode通关全记录】704. 二分查找

    题目地址:704. 二分查找

    解法:二分查找

    二分查找的代码大家应该都背的滚瓜烂熟了吧,这里就着重讲一下二分查找的一些小技巧:

    1. 在使用mid = (left + right) / 2可能发生溢出的情况下,可以套用mid = left + (right - left) / 2的公式避免溢出;
    2. 除以2这个操作可以用右移1位来代替,会更快一些:mid = left + (right - left) >> 1
    func search(nums []int, target int) int {
        l, r := 0, len(nums)-1
        for l <= r {
            mid := l + (r-l)>>1
            if nums[mid] == target {
                return mid
            } else if nums[mid] < target {
                l = mid + 1
            } else {
                r = mid - 1
            }
        }
        return -1
    }
    

    执行用时: 32 ms(超过80.69%的Golang提交记录)

    内存消耗: 6.7 MB(超过25.59%的Golang提交记录)

    时间复杂度:O(logn),二分查找的时间复杂度为O(logn);

    空间复杂度:O(1),只使用了常数个数的存储空间。

    相关文章

      网友评论

          本文标题:【LeetCode通关全记录】704. 二分查找

          本文链接:https://www.haomeiwen.com/subject/ibjxaltx.html