题目:转动数组寻找目标值
思路:二分
旋转后的数组,二分中点两侧至少一侧有序。
代码:
import java.util.*;
public class Solution {
/**
*
* @param A int整型一维数组
* @param target int整型
* @return int整型
*/
public int search (int[] A, int target) {
// write code here
if (A.length == 0) {
return -1;
}
int left = 0;
int right = A.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (A[mid] == target) {
return mid;
}
// 左侧有序
if (A[left] <= A[mid]) {
if (target >= A[left] && target < A[mid]) {
right = mid - 1;
}
else {
left = mid + 1;
}
}
// 右侧有序
else {
if (target > A[mid] && target <= A[right]) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
}
return -1;
}
}