<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无码麻豆| 97无码人妻福利免费公开在线视频 | 亚洲午夜久久久久久久久电影网| 国产一级大片免费看| 亚洲欧洲无码一区二区三区| 毛片免费观看的视频在线| 亚洲精品av无码喷奶水糖心| 国产免费资源高清小视频在线观看| 亚洲人av高清无码| 国产成人精品123区免费视频| 亚洲夂夂婷婷色拍WW47| 日本特黄a级高清免费大片| 国产成人亚洲综合在线| 亚洲偷自拍拍综合网| 亚洲愉拍一区二区三区| 尤物永久免费AV无码网站| 无码日韩人妻AV一区免费l | 成年大片免费视频| 亚洲国产成人无码AV在线| 亚洲人妻av伦理| 久久久精品免费视频| 久久亚洲最大成人网4438| 无码不卡亚洲成?人片| 在线观看免费无码专区| 亚洲一区二区三区高清视频| 国产免费变态视频网址网站| 一区在线免费观看| 亚洲欧洲日韩综合| 免费国产成人午夜私人影视| 国产va在线观看免费| 亚洲第一第二第三第四第五第六| 女性无套免费网站在线看| 国产精品免费久久久久久久久| 亚洲avav天堂av在线不卡 |