旋转数组的最小数字
题目描述:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/
解法:二分法,首尾中间很重要
class Solution{
public int minArray(int[] numbers) {
int i = 0, j = numbers.length - 1;
while(i < j) {
int m = (i+j)/2;
if(numbers[m] > numbers[j]) i = m + 1;
else if(numbers[m] < numbers[j]) j =m;
else j--;
}
return numbers[i];
}
}
在排序数组中查找数字
题目描述:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/
public int search2(int[] nums, int target) {
int i= 0, j = nums.length - 1;
while(i <= j) {
int m = (i+j)/2;
if(nums[m] <= target) i = m+1;
else j = m -1;
}
int right = i;
if(j >= 0 && nums[j] != target) return 0;
i = 0; j = nums.length - 1;
while(i <= j) {
int m = (i+j)/2;
if(nums[m] < target) i = m+1;
else j = m -1;
}
int left = j;
return right - left -1;
}