二分查找

给定一个有序的整形数值和一个整形的数,在数组中查找给定的数,如果存在,返回在数组中的下标,否则,返回-1.

    输入样例1:

input:[-1,0,1,2,3,4,5,6,7],target=4
output:5

  输入样例2:

input:[-1,3,5,7,11,14],target=2
output:-1

  

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

  

posted @ 2021-11-26 20:06  黑码头  阅读(21)  评论(0)    收藏  举报