首页 > 其他 > 详细

leetcode 704. Binary Search 、35. Search Insert Position

时间:2019-04-17 22:01:39      阅读:139      评论:0      收藏:0      [点我收藏+]

704. Binary Search 

1.使用start+1 < end,这样保证最后剩两个数

2.mid = start + (end - start)/2,这样避免接近max-int导致的溢出

3.start、end直接等于mid

4.最后比较两个位置

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

 35. Search Insert Position

从左找第一个大于等于的,从右找第一个小于等于的

注意:分别针对找不到第一个在最后返回的值不同,从左返回的是最后一个位置,从右返回的是第一个位置

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        if(nums.empty())
            return -1;
        for(int i = 0;i < nums.size();i++){
            if(nums[i] >= target)
                return i;
        }
        return nums.size();
    }
};

 

leetcode 704. Binary Search 、35. Search Insert Position

原文:https://www.cnblogs.com/ymjyqsx/p/10726300.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!