每日一题 0129

(2022.01.29)每日一题(代码随想录版 )二分查找及搜索插入位置:704,35

二分查找要注意边界条件,要严格遵循循环不变量原则。牢记,查找到了一定是满足循环条件退出,而没找到的话就具体分析咯。

只能说简单的算法也很牛啦,我真实弱鸡。

//搜索插入位置
//low其实就是最后要插入的位置。
class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        int low = 0;
        int high = nums.size()-1;
        int mid = (low + high)>>1;
        while(low <= high){
            mid = (low + high)>>1;
            if(nums[mid] < target){
                low = mid + 1;
            }else if(nums[mid] > target){
                high = mid - 1;
            }else{
                return mid;
            }
        }
         return low;
    }
   
};

//二分查找
public:
    int searchInsert(vector<int>& nums, int target) {
        int low = 0;
        int high = nums.size()-1;
        int mid = (low + high)>>1;
        while(low <= high){
            mid = (low + high)>>1;
            if(nums[mid] < target){
                low = mid + 1;
            }else if(nums[mid] > target){
                high = mid - 1;
            }else{
                return mid;
            }
        }
         return -1;
    }
   
};

posted @ 2022-01-29 14:11  kusola  阅读(36)  评论(0)    收藏  举报