704. Binary Search

!!!题目链接!!!

solution:

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

优化:

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int max = nums.size() - 1;
        int min = 0;
        int mid = 0;
        while(max >= min)
        {
            mid = min + ((max - min) >> 1);
            if (nums[mid] == target)
            {
                return mid;
            }else if (nums[mid] < target)
            {
                min = mid + 1;
            }else if (nums[mid] > target)
            {
                max = mid - 1;   
            }      
        }
        return -1;
    }
};
原文地址:https://www.cnblogs.com/Pomelos/p/15765261.html