zoukankan      html  css  js  c++  java
  • Search in Rotated Sorted Array II

    Follow up for "Search in Rotated Sorted Array":
    What if duplicates are allowed?

    Would this affect the run-time complexity? How and why?

    Write a function to determine if a given target is in the array.

    Solution:

    唯一需要判断的地方是如果刚好在duplicate的地方分开了怎么办,这样的时候 mid没有意义了。

     1 public class Solution {
     2     public boolean search(int[] A, int target) {
     3         // IMPORTANT: Please reset any member data you declared, as
     4         // the same Solution instance will be reused for each test case.
     5         int end = A.length - 1;
     6         int start = 0;
     7         if (A[start] == A[end]){
     8             if (A[start]==target) return true;
     9             int i = A[start];
    10             while (start <= end && A[start] == i) start ++;
    11             while (start <= end && A[end] == i) end --;
    12         }
    13         while(start <= end){
    14             int mid = (end + start) / 2;
    15             if(target == A[mid]) return true;
    16             if(A[start] <= A[mid]){//left half is sorted
    17                 if(A[start] <= target &&  target < A[mid]) end = mid - 1;
    18                 else start = mid + 1;
    19             }
    20             else{
    21                 if(A[mid] < target && target <= A[end]) start = mid + 1;
    22                 else end = mid - 1;
    23             }
    24         }
    25         return false;
    26     }
    27 }
  • 相关阅读:
    Android之Activity启动过程
    Android之Application进阶
    Android之Context进阶
    Thread之ThreadLocal
    Android 系统服务与Binder应用服务
    Android Binder
    Android SystemServer
    Android系统服务与服务注册
    Android Binder进阶扁一
    小米商城-题头3
  • 原文地址:https://www.cnblogs.com/reynold-lei/p/3420619.html
Copyright © 2011-2022 走看看