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

    判断左右哪一半sorted对那一边进行binary search

     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         if(A == null)
     6             return false;
     7         int index = binarySearch(A, 0, A.length, target);
     8         if(index < A.length && A[index] == target)
     9             return true;
    10         return false;
    11         
    12     }
    13     private int binarySearch(int[] A, int start, int end, int target){
    14         if(start >= end - 1 )
    15             return start;
    16         int mid = (start + end) / 2;
    17         if(A[mid] == target)
    18             return mid;
    19         if(A[start] == A[mid]){
    20             return binarySearch(A, start+1, end, target);
    21         }
    22         else if(A[start] < A[mid]){
    23             if(target > A[mid])
    24                 return binarySearch(A, mid, end, target);
    25             else if(target >= A[start])
    26                 return binarySearch(A, start, mid, target);
    27             else
    28                return binarySearch(A, mid, end, target); 
    29         }
    30         else{
    31             if(target < A[mid])
    32                 return binarySearch(A, start, mid, target);
    33             else if(target >= A[start])
    34                 return binarySearch(A, start, mid, target);
    35             else
    36                 return binarySearch(A, mid, end, target); 
    37         }
    38     }
    39 }
  • 相关阅读:
    J
    I题
    H
    G
    F题
    E题
    D题
    C题
    B题
    A题
  • 原文地址:https://www.cnblogs.com/jasonC/p/3421458.html
Copyright © 2011-2022 走看看