Search in Rotated Sorted Array

来源:互联网 发布:手机淘宝2016旧版本 编辑:程序博客网 时间:2024/05/30 04:08
一道两年前做过的题,差点漏网。
再次理解二分的核心思维:通过一次比较,能<strong><span style="font-size:24px;">把目标确定在一边</span></strong>
public class Solution {    public int search(int[] A, int target) {        if (A == null || A.length == 0) {            return -1;        }        int start = 0, end = A.length - 1;        while (start + 1 < end) {            int mid = start + (end - start) / 2;            if (A[mid] == target) {                return mid;            } else if (A[mid] < A[end]) {                if (target > A[mid] && target <= A[end]) {                    start = mid;                } else {                    end = mid;                }            } else {                if (target >= A[start] && target < A[mid]) {                    end = mid;                } else {                    start = mid;                }            }        }        if (A[start] == target) {            return start;        } else if (A[end] == target) {            return end;        } else {            return -1;        }    }}

0 0