面试:数组:旋转数组搜索

来源:互联网 发布:php 获取请求url 编辑:程序博客网 时间:2024/06/07 00:48

题目

给定一个有序数组的旋转和一个目标值,返回其目标值在该数组的下标。如果不存在,那么返回-1。假设数组没有重复的值。


算法

二份查找
O(lgN)


import java.util.*;class Solution{    public int searchRotateArray(int[] A,int target){        int left=0;        int right=A.length-1;        while(left<=right){            int mid=left+(right-left)/2;            if(A[mid] == target) return mid;            // 左半部分有序            if(A[left]<=A[mid]){                if(A[left]<=target && target<A[mid])                    right=left-1;                else                    left=mid+1;            }            else{                // 右半部分有序                if(A[mid]<target && target<=A[right])                    left=mid+1;                else                    right=mid-1;            }        }        return -1;    }}
0 0
原创粉丝点击