34. Search for a Range

来源:互联网 发布:vscode 代码片段 编辑:程序博客网 时间:2024/05/21 06:10

1刷
还是二分查找的练习,学会lower_bound和upper_bound的方法果然一次AC!!!
Important!!!

class Solution {public:    vector<int> searchRange(vector<int>& nums, int target) {        vector<int>se;        int len = nums.size();        int first = 0;        while(len > 0){            int half = len >> 1;            int mid = first + half;            if(nums[mid] < target){                first = mid + 1;                len = len - half - 1;            }            else                len = half;        }        if(first == nums.size()){            se.push_back(-1);            se.push_back(-1);            return se;        }        else if(nums[first] != target){            se.push_back(-1);            se.push_back(-1);            return se;        }        se.push_back(first);        first = 0;        len = nums.size();        while(len > 0){            int half = len >> 1;            int mid = first + half;            if(nums[mid] > target)                len = half;            else{                first = mid + 1;                len = len - half - 1;            }        }         se.push_back(first - 1);        return se;    }};

这题要3刷,超级好题!用来复习无敌2分,2分还有一个模板需要练习就是就求最小值,上一题还是上上提有。

class Solution {public:    vector<int> searchRange(vector<int>& nums, int target) {        vector<int>ve;        int first = 0, middle;        int half, len = nums.size();        while(len > 0){            half = len >> 1;            middle = first + half;            if(nums[middle] < target){                first = middle + 1;                len = len - half - 1;            }            else len = half;        }        if(nums.size() == 0 || first >= nums.size() || nums[first] != target){            ve.push_back(-1);            ve.push_back(-1);            return ve;        }        ve.push_back(first);        first = 0;        len = nums.size();        while(len > 0){            half = len >> 1;            middle = first + half;            if(nums[middle] > target){                len = half;            }            else{                first = middle + 1;                len = len - half - 1;            }        }        ve.push_back(first - 1);        return ve;    }};
0 0
原创粉丝点击