本文主要是介绍LeetCode第34题之Search for a Range,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
C++代码:
#include <iostream>
#include <vector>
using namespace std;class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {vector<int> res(2, -1);int sz = nums.size();int l = 0;int r = sz-1;int mid;while (l<=r){mid = (l+r)/2;if (nums[mid]>= target){r = mid-1;}else{l = mid+1;}}//此时r必是比target小的第一个数的下标res[0] = r+1;l = 0;r = sz-1;while (l<=r){mid = (l+r)/2;if (nums[mid] <= target){l = mid+1;}else{r = mid-1;}}//此时l必是比target大的第一个数的下标res[1] = l-1;//如果不存在这样的数if (res[0] > res[1]){res[0] = -1;res[1] = -1;}return res;}
}; int main()
{Solution s;vector<int> v;v.push_back(5);v.push_back(7);v.push_back(7);v.push_back(8);v.push_back(8);v.push_back(10);vector<int> res = s.searchRange(v,10);for (int i=0;i<res.size();++i){cout<<res[i]<<'\t';}cout<<endl;return 0;
}
这篇关于LeetCode第34题之Search for a Range的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!