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 }
  • 相关阅读:
    SQL Server Alwayson架构下 服务器 各虚拟IP漂移监控告警的功能实现 -2(虚拟IP视角)
    Android LitePal
    Android SQLite
    汇编语言知识点总结
    三层架构
    将博客搬至CSDN
    回溯(二)
    Android持久化技术
    Android广播时间——实现强制下线功能
    Android广播机制(2)
  • 原文地址:https://www.cnblogs.com/reynold-lei/p/3420619.html
Copyright © 2011-2022 走看看