码迷,mamicode.com
首页 > 其他好文 > 详细

Search in Rotated Sorted Array

时间:2017-07-31 12:41:20      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:time   medium   exists   code   tag   hal   highlight   cat   class   

 

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

Have you met this question in a real interview? Yes
Example
For [4, 5, 1, 2, 3] and target=1, return 2.

For [4, 5, 1, 2, 3] and target=0, return -1.

Challenge 
O(logN) time

Tags 
Sorted Array Array LinkedIn Binary Search Uber Facebook
Related Problems 
Medium Search in Rotated Sorted Array II 40 %
Easy Search a 2D Matrix

有序数组的题, 二分法, 根据mid的位置再确定start 和end的位置, 画图分情况

public int search(int[] A, int target) {
        // write your code here
        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;
             }
             if (A[start] < A[mid] && A[start] > A[end]){
                 if (A[mid] > target && A[start] <= target) {
                     end = mid;
                 } else {
                     start = mid;
                 }
             } else if (A[start] <= A[mid] && A[mid] <= A[end]) {
                 if (A[mid] < target) {
                     start = mid;
                 } else {
                     end = mid;
                 }
             } else {
                 if (A[mid] < target && target <= A[end]) {
                     start = mid;
                 } else {
                     end = mid;
                 }
             }
         }
         
         if (A[start] == target) {
             return start;
         } else if (A[end] == target) {
             return end;
         } else {
             return -1;
         }
    }

  

 

Search in Rotated Sorted Array

标签:time   medium   exists   code   tag   hal   highlight   cat   class   

原文地址:http://www.cnblogs.com/apanda009/p/7262292.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!