目录
山脉数组的峰顶索引

java
public int peakIndexInMountainArray(int[] arr) {
int left = 0;
int right = arr.length - 1 ;
while(left < right){
int mid = left + (right - left )/2;
if(arr[mid] < arr[mid + 1])
left = mid + 1;
else if(arr[mid] > arr[mid + 1])
right = mid ;
// else
// return mid;
}
return left;
}
寻找峰值
java
public int findPeakElement(int[] nums) {
int left = 0;
int right = nums.length - 1;
while(left < right){
int mid = left + (right - left + 1) / 2;
if(nums[mid] > nums[mid - 1])
left = mid ;
else
right = mid - 1;
}
return left;
}
点名

java
public int takeAttendance(int[] records) {
int left = 0;
int right = records.length - 1;
while(left < right){
int mid = left + (right - left) / 2;
if(records[mid] == mid)
left = mid + 1;
else
right = mid;
}
// return records[left] == left ? left + 1 : left;
if(records[left] == left)
return left + 1;
return left;
}
寻找旋转数组中的最小值
java
public int findMin(int[] nums) {
int left = 0;
int right = nums.length - 1;
int x = nums[right];
while(left < right){
int mid = left + (right - left) / 2;
if(nums[mid] > x)
left = mid + 1;
else
right = mid;
}
return nums[left];
}

