代码:
1 #include<iostream> 2 #include<vector> 3 4 using namespace std; 5 6 int searchSmallest(int A[], int n, int target){ 7 int l = 0; 8 int r = n - 1; 9 while (l <= r){ 10 int mid = (l + r) / 2; 11 if (target <= A[mid]){ 12 r = mid-1; 13 } 14 else{ 15 l = mid+1; 16 } 17 } 18 if (A[r + 1] == target) 19 return r + 1; 20 else 21 return -1; 22 } 23 24 int searchLargest(int A[], int n, int target){ 25 int l = 0; 26 int r = n - 1; 27 while (l <= r){ 28 int mid = (l+ r) / 2; 29 if (target >= A[mid]){ 30 l = mid+1; 31 } 32 else{ 33 r = mid - 1; 34 } 35 } 36 if (A[l-1] == target) 37 return l - 1; 38 else 39 return -1; 40 } 41 42 vector<int> searchRange(int A[], int n, int target) { 43 vector<int> result; 44 int a = searchSmallest(A, n, target); 45 int b = searchLargest(A, n, target); 46 result.push_back(a); 47 result.push_back(b); 48 return result; 49 } 50 51 int main(){ 52 int a[] = {1}; 53 cout << searchSmallest(a, 1, 1) << endl; 54 cout << searchLargest(a, 1, 1) << endl; 55 vector<int> result = searchRange(a, 1, 1); 56 for (int i = 0; i < result.size(); i++){ 57 cout << result[i] << endl; 58 } 59 }