https://leetcode.com/problems/search-for-a-range/
二分即可
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
#include <vector>
using namespace std;
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
vector <int> ret;
int findflag = 0;
for( int i=0;i<nums.size(); i++ ) {
if(target == nums[i]) {
findflag = 1;
break;
}
}
if( !findflag ) {
ret.push_back(-1);
ret.push_back(-1);
return ret;
}
if( nums.size() == 0 ) return ret ;
int low = lower_bound(nums.begin(), nums.end(), target) - nums.begin();
int high = upper_bound( nums.begin(), nums.end(), target ) - nums.begin() ;
ret.push_back(low);
if(high > low) high--;
ret.push_back(high);
return ret;
}
};
int main() {
freopen( "34", "r", stdin );
vector <int> nums;
int tar, in;
int n;
while( cin >> n ) {
for( int i=0; i<n; i++ ) {
cin >> in;
nums.push_back(in);
}
cin >> tar;
Solution s;
vector <int> ret = s.searchRange(nums, tar);
cout << ret[0] << " " << ret[1] << endl;
}
return 0;
}