zoukankan      html  css  js  c++  java
  • leetcode 之Search in Rotated Sorted Array(四)

    描述

        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.

        如果循环数组里有重复元素,则根据A[m]>=A[l]是无法判断出(m,l)之间是升序的。因此,需将大于和等于分开来考虑。

        只需在等于时,将重复元素跳过再比较即可。

        

     1 int searchRotateSA(int A[], int n,int target)
     2 {
     3     int first = 0, last = n;
     4     while (first!=last)
     5     {
     6         int mid = first + (last - first) / 2;
     7         if (A[mid] = target)
     8         {
     9             return mid;
    10         }
    11         else if (A[first]<A[mid])//判断大小顺序
    12         {
    13             if (A[first] <= target&&target <= A[mid])
    14                 last = mid;
    15             else
    16                 first = mid + 1;
    17         }
    18         else if (A[first]>A[mid])
    19         {
    20             if (A[first] >= target&& A[mid] <= target)
    21                 last = mid;
    22             else
    23                 first = mid + 1;
    24             
    25         }
    26         else first++;
    27     }
    28 
    29     return -1;
    30 }

         

  • 相关阅读:
    poj 3071 Football (概率dp)
    CF1408G Clusterization Counting
    2-sat
    线段树优化建图
    SP5971 LCMSUM
    [NOI2020]命运
    SP19149 INS14H
    Atcoder ARC-068
    CF908G New Year and Original Order
    (四)、Fiddler打断点
  • 原文地址:https://www.cnblogs.com/573177885qq/p/5451232.html
Copyright © 2011-2022 走看看