<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開獎
    主站蜘蛛池模板: 69式国产真人免费视频| 日本永久免费a∨在线视频 | 亚洲第一永久在线观看| 2022免费国产精品福利在线| 日韩精品电影一区亚洲| 麻豆91免费视频| 亚洲国产精品不卡毛片a在线| 精品成人一区二区三区免费视频| 国产伦一区二区三区免费| 在线亚洲v日韩v| 亚洲一级片免费看| 怡红院免费全部视频在线视频| 亚洲免费观看视频| 亚欧免费无码aⅴ在线观看| 91亚洲国产成人精品下载| 蜜臀AV免费一区二区三区| 亚洲伊人久久大香线蕉结合| 成年女人毛片免费视频| 亚洲av无码无线在线观看| 亚洲黄片手机免费观看| 免费萌白酱国产一区二区三区| 亚洲国产一区在线| 女性自慰aⅴ片高清免费| 美女视频黄.免费网址| 中文字幕精品亚洲无线码一区| 日韩视频在线观看免费| 亚洲国产精品成人综合色在线婷婷 | 亚洲第一视频在线观看免费| 国产精品一区二区三区免费| 亚洲乱亚洲乱淫久久| 毛片免费观看网站| 人妻仑乱A级毛片免费看| 亚洲人成网www| 欧美大尺寸SUV免费| 草久免费在线观看网站| 亚洲一区二区在线免费观看| 最近最新的免费中文字幕| 色吊丝性永久免费看码| 亚洲婷婷天堂在线综合| 一级毛片直播亚洲| 综合在线免费视频|