【leetcode刷题】 1.1数组二分法

一、二分法的使用条件

给定一组数字,该组数字呈升序排列,且无重复元素。

二、使用步骤

1.示例

输入: nums = [-1,0,3,5,9,12], target = 9     
输出: 4       
解释: 9 出现在 nums 中并且下标为 4   

2.注意事项

区间的定义这就决定了二分法的代码应该如何写,定义target在[left, right]区间,有如下两点:

1.while (left <= right) 要使用 <= ,因为left == right是有意义的,所以使用 <=
2.if (nums[middle] > target) right 要赋值为 middle - 1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结 束下标位置就是 middle - 1

代码示例:

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

该处使用的url网络请求的数据。

你可能感兴趣的:(leetcode,算法,数据结构)