自学内容网 自学内容网

二分查找法(leetcode 704)

在一个数组里找一个target,判断这个target在不在这个数组里,如果在,返回这个数组所对应的这个元素所对应的下标,否则返回-1.

易错点:

        (1)while(left<right)     vs          while(left<=right)

        (2)if(num[middle] > target)

                     right=middle          vs            right=middle-1   (更新右区间)

区间定义:

        左闭右闭:[left,right]

        左闭右开:[left,right)

左闭右闭写法: ​​​​​​

左闭右开写法:

例:

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left = 0;
        int right = nums.size() - 1;
        while(left <= right)
        {
            int mid=(left+right)/2;
            if(nums[mid]>target)
                right=mid - 1;
            else if(nums[mid]<target)
                left = mid + 1;
            else
                return mid;
        }
        return -1;
    }
};


原文地址:https://blog.csdn.net/m0_74794884/article/details/143821423

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!