/**
* Created by lxw, liwei4939@126.com on 2017/11/5.
* 在有序旋转数组中找到一个数
*/
public class rotatedArrayFindNum {
public boolean isContains(int[] arr, int num){
int low = 0;
int high = arr.length - 1;
int mid = 0;
while (low <= high){
mid = (low + high) / 2;
if(arr[mid] == num){
return true;
}
if(arr[low] == arr[mid] && arr[mid] == arr[high]){
while (low != mid && arr[low] == arr[mid]){
low++;
}
if(low == mid){
low = mid + 1;
continue;
}
}
if(arr[low] != arr[mid]){
if(arr[mid] > arr[low]){
if(num >= arr[low] && num < arr[mid]){
high = mid - 1;
} else {
low = mid + 1;
}
} else {
if(num > arr[mid] && num <= arr[high]){
low = mid + 1;
} else {
high = mid - 1;
}
}
} else {
if(arr[mid] < arr[high]){
if(num > arr[mid] && num <= arr[high]){
low = mid + 1;
} else {
high = mid - 1;
}
} else {
if(num >= arr[low] && num < arr[mid]){
high = mid - 1;
} else {
low = mid + 1;
}
}
}
}
return false;
}
public static void main(String[] args){
rotatedArrayFindNum tmp = new rotatedArrayFindNum();
int[] arr = {4, 5, 6, 7, 1, 2, 3};
int num = 6;
System.out.println(tmp.isContains(arr, num));
}
}
在有序旋转数组中找到一个数
最新推荐文章于 2022-02-10 13:10:20 发布