zoukankan      html  css  js  c++  java
  • 63. 搜索旋转排序数组 II

    跟进“搜索旋转排序数组”,假如有重复元素又将如何?

    是否会影响运行时间复杂度?

    如何影响?

    为何会影响?

    写出一个函数判断给定的目标值是否出现在数组中。

    样例

    给出[3,4,4,5,7,0,1,2]和target=4,返回 true

    发现lintcode有一点不好就是这种O(n)的解法也能给过

     1 bool search(vector<int> &A, int target) {
     2         // write your code here
     3         vector<int>::iterator it=A.begin();
     4         while(it!=A.end()){
     5             if(target==*it){
     6                 return true;
     7             }
     8             it++;
     9         }
    10         return false;
    11     }

    应该给个超时什么的

    下面来个正经的吧

     1 bool search(vector<int> &A, int target) {
     2         int left=0,right=A.size()-1;
     3         int mid;
     4         while(left<=right){
     5             mid=(right+left)/2;
     6             if(target==A[mid]){
     7                 return true;
     8             }
     9             if(A[mid]>A[left]){//left->mid之间有序
    10                 if(A[left] <= target && target < A[mid]) {
    11                     right = mid - 1;
    12                 }
    13                 else{
    14                     left = mid + 1;
    15                 }
    16             }
    17             else if(A[mid]<A[left]){//mid->right之间有序
    18                 if(A[mid] < target && target <= A[right])  {
    19                     left = mid + 1;
    20                 }
    21                 else  {
    22                     right = mid - 1;
    23                 }
    24             }
    25             else{//mid->right之间相同
    26                 left++;
    27             }
    28         }
    29         return false;
    30     }

    在原先代码上略加修改,除了将返回类型改成对应的bool值之外,还要注意A[mid]==A[left]的情况,这也是这一题与上一题的主要区别

    如果相同,说明后半全是相同元素,那么接着顺着找就行了

  • 相关阅读:
    USACO / Longest Prefix最长前缀(DP)
    (转)HDOJ 4006 The kth great number(优先队列)
    STL priority_queue(优先队列(堆))
    康托展开
    USACO / Magic Squares(经典BFS+Cantor展开hash)
    国家集训队论文分类整理
    国家集训队论文分类整理
    国家集训队论文分类整理
    OI / ACM 知识归纳
    学年总结跋涉ACM之路
  • 原文地址:https://www.cnblogs.com/TheLaughingMan/p/8226162.html
Copyright © 2011-2022 走看看