<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    中文JAVA技術平等自由協作創造

    Java專題文章博客和開源

    常用鏈接

    統計

    最新評論

    在旋轉有序數組內找特定的值

      要求
      給定一沒有重復元素的旋轉數組(它對應的原數組是有序的),求給定元素在旋轉數組內的下標(不存在的返回-1)。
      例如
      有序數組為{0,1,2,4,5,6,7},它的一個旋轉數組為{4,5,6,7,0,1,2}.
      元素6在旋轉數組內,返回2
      元素3不在旋轉數組內,返回-1
      分析托福答案
      遍歷一遍,可以輕松搞定,時間復雜度為O(n),因為是有序數組旋轉得到,這樣做肯定不是最優解。有序,本能反映用二分查找,舉個例子看看特點
      可以看出中間位置兩段起碼有一個是有序的(不是左邊,就是右邊),那么就可以在有序的范圍內使用二分查找;如果不再有序范圍內,就到另一半去找。
      參考代碼
      復制代碼
      int search(int A[], int n, int target) {
      int beg = 0;
      int end = n - 1;
      while (beg <= end)
      {
      int mid = beg + (end - beg) / 2;
      if(A[mid] == target)
      return mid;
      if(A[beg] <= A[mid])
      {
      if(A[beg] <= target && target < A[mid])
      end = mid - 1;
      else
      beg = mid + 1;
      }
      else
      {
      if(A[mid] < target && target <= A[end])
      beg = mid + 1;
      else
      end = mid - 1;
      }
      }
      return -1;
      }
      復制代碼
      擴展
      上邊的有求是沒有重復的元素,現在稍微擴展下,可以有重復的元素,其他的要求不變。
      思路雅思答案
      大致思路與原來相同,這是需要比較A[beg] 與 A[mid]的關系
      A[beg] < A[mid] ----左邊有序
      A[beg] > A[mid] ----右邊有序
      A[beg] = A[mid] ----++beg
      復制代碼
      bool search(int A[], int n, int target) {
      int beg = 0;
      int end = n - 1;
      while (beg <= end)
      {
      int mid = beg + (end - beg) / 2;
      if(A[mid] == target)
      return true;
      if(A[beg] < A[mid])
      {
      if(A[beg] <= target && target < A[mid])
      end = mid - 1;
      else
      beg = mid + 1;
      }
      else if(A[beg] > A[mid])
      {
      if(A[mid] < target && target <= A[end])
      beg = mid + 1;
      else
      end = mid - 1;
      }
      else
      ++beg;
      }
      return false;
      }

    posted on 2014-04-26 13:33 好不容易 閱讀(179) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    PK10開獎 PK10開獎
    主站蜘蛛池模板: 最好免费观看韩国+日本| 中文字幕乱码免费视频| 亚洲av麻豆aⅴ无码电影 | 亚洲毛片在线观看| 久久大香香蕉国产免费网站 | 国产国拍亚洲精品福利| jizz免费在线观看| 亚洲精品无码精品mV在线观看| 美女被免费网站91色| 亚洲av中文无码乱人伦在线播放| 久久午夜无码免费| 亚洲美女中文字幕| 天天操夜夜操免费视频| 老司机午夜在线视频免费| 亚洲一本大道无码av天堂| 先锋影音资源片午夜在线观看视频免费播放| 亚洲AV日韩AV永久无码久久 | 免费成人黄色大片| 国产精品免费观看视频| 亚洲av日韩av无码黑人| 人成午夜免费视频在线观看| 亚洲а∨天堂久久精品9966 | 亚洲国产成人精品无码久久久久久综合 | 女性无套免费网站在线看| 亚洲变态另类一区二区三区| 四虎永久免费观看| 久9这里精品免费视频| 亚洲成人激情小说| 亚洲免费视频一区二区三区| 久久久精品免费视频| 国产精品亚洲一区二区麻豆| 亚洲一区二区三区在线视频| 最近2019年免费中文字幕高清| avtt天堂网手机版亚洲| 亚洲无线一二三四区手机| 香蕉免费一区二区三区| 久久精品亚洲日本波多野结衣| 狠狠色伊人亚洲综合成人| 四虎成人精品一区二区免费网站 | 亚洲自国产拍揄拍| 国产日产亚洲系列|