class Solution {
public:
int search(vector<int>& nums, int target) {
int len = nums.size();
int l = 0, r = len - 1, m = 0;
while(l <= r){
m = l + ((r - l) >> 1);
if(target == nums[m]){
return m;
}else{
if(target > nums[m]){
l = m + 1;
}else{
r = m - 1;
}
}
}
return -1;
}
};
2.力扣744.寻找比目标字母大的最小字母
class Solution {
public:
char nextGreatestLetter(vector<char>& letters, char target) {
int len = letters.size();
int l = 0, r = len - 1, m = 0;
char ans = letters[0];
while(l <= r){
m = l + ((r - l) >> 1);
if(letters[m] > target){
ans = letters[m];
r = m - 1;
}else{
l = m + 1;
}
}
return ans;
}
};
3.力扣162. 寻找峰值
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int len = nums.size();
if (len == 1) {
return 0;
}
if (nums[0] > nums[1]) {
return 0;
}
if (nums[len - 2] < nums[len - 1]) {
return len - 1;
}
int l = 1, r = len - 2, m = 0, ans = -1;
while (l <= r) {
m = l + ((r - l) >> 1);
if(nums[m - 1] > nums[m]){
r = m - 1;
}else if(nums[m] < nums[m + 1]){
l = m + 1;
}else{
ans = m;
break;
}
}
return ans;
}
};