我的空间复杂度是O(N) 没有用到转动的特点
import java.util.*;
public class Solution {
/**
*
* @param A int整型一维数组
* @param target int整型
* @return int整型
*/
public int search (int[] A, int target) {
// write code here
// 如果先存储元素+下标,再改成有序的,取到目标值之后去哈希表找到对应的下标返回即可
Map<Integer,Integer> map = new HashMap<>();
for(int i = 0; i < A.length; i++){
map.put(A[i],i);
}
Arrays.sort(A);
int left = 0;
int right = A.length-1;// 这里注意已经提示不存在重复值
while(left <= right){
int mid = left + (right - left)/2;
if(A[mid] == target) return map.get(A[mid]);
if(A[mid] > target) right = mid-1;
if(A[mid] < target) left = mid+1;
}
return -1;
}
}
京公网安备 11010502036488号