<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      10 尋找山型數組的頂點(Maximum Number in Mountain Sequence)

      1 題目

      ??尋找山型數組的頂點(Maximum Number in Mountain Sequence)

      lintcode:題號——585,難度——medium

      2 描述

      ??給定包含n 個整數的山脈數組,即先增后減的序列,找到山頂(最大值),數組嚴格遞增、嚴格遞減。

      ??樣例1:

      輸入:nums = [1, 2, 4, 8, 6, 3]
      輸出:8

      ??樣例2:

      輸入:nums = [10, 9, 8, 7]
      輸出:10

      3 思路

      ??需要在一個先增后減的序列中尋找頂點值,類似爬山的過程,只要一直向上爬,頂點就在前面,身后的路不可能存在頂點,可以通過不斷地拋掉一些區間,來縮小目標范圍。
      ??之前的題目——第一個壞的版本[1]中,提到過二分法可以解決形如“ooooxxxx”的問題,本題無法將問題轉化為這種形式,需要從另一個方面來思考,可以將整體拆解成“half half”型的兩半,拋掉其中一半來縮小目標區間。
      ??使用二分法,取中點,如果中點是從左向右遞增,則可以看成從左向右爬山,當前位置的左邊則不可能存在頂點,拋掉左邊區間;換個方向,如果中點是從右向左遞增,則可以看成是從右向左爬山,當前位置的右邊不可能存在頂點,拋掉右邊區間。

      1. 取中點;
      2. 比較中點與下一個點的關系是遞增還是遞減,以此來判斷頂點在哪一半區間;
      3. 拋掉不可能存在頂點的區間。
      4. 繼續對剩下的區間執行以上步驟,直到找到頂點。

      ??過程中需要判斷當前點的下一步是在向上走還是向下走,考慮下一個元素的時候可能會越界,套用之前的經典二分搜索模板[2],則可以不用考慮下一個元素是否越界的問題,因為start或mid之后一定存在end,退出條件是start + 1 < end不會出現訪問越界的情況。

      3.1 圖解

      graph TD A --> A1[\左邊都比中點小,拋掉'1, 2'\] A[山型序列<br/>'1, 2, 4, 8, 6, 3'] -- 中間位置元素'4',下一個元素'8',遞增 --> B B[縮小區間至'4, 8, 6, 3'] -- 中間位置元素'8',下一個元素'6',遞減 --> C B --> B1[/右邊都比中點小,拋掉'6, 3'/] C[縮小區間至'4, 8'] -- 只剩頭尾元素比較大小 --> D D(找到目標元素'8')

      3.2 時間復雜度

      ??算法的時間復雜度為O(log n)。

      3.3 空間復雜度

      ??算法的空間復雜度為O(1)。

      4 源碼

      ??注意事項:

      返回的是值,不是序號;

      ??C++版本:

      /**
      * @param nums: 參數
      * @return: 返回值
      */
      int findMin(vector<int> &nums) {
          int mountainSequence(vector<int> &nums) {
              // write your code here
              if (nums.empty())
              {
                  return -1;
              }
      
              int start = 0;
              int end = nums.size() - 1;
              int mid = 0;
              while (start + 1 < end)
              {
                  mid = start + (end - start) / 2;
                  if (nums.at(mid) < nums.at(mid + 1))
                  {
                      start = mid;
                  }
                  if (nums.at(mid) > nums.at(mid + 1))
                  {
                      end = mid;
                  }
              }
      
              if (nums.at(start) > nums.at(end))
              {
                  return nums.at(start);
              }
              else
              {
                  return nums.at(end);
              }
          }
      }
      

      1. 第一個壞的版本:https://blog.csdn.net/SeeDoubleU/article/details/118370300 ??

      2. 經典二分搜索:https://blog.csdn.net/SeeDoubleU/article/details/118271548 ??

      posted @ 2021-07-21 23:34  seedoubleu  閱讀(90)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品人伦一区二区三| 久久久无码精品国产一区| 贵德县| 成人污视频| 国产极品视频一区二区三区| 18禁在线一区二区三区| 亚洲午夜性猛春交xxxx| 免费人妻av无码专区| 人妻少妇无码精品专区| 精品国产欧美一区二区三区在线| 又大又硬又爽免费视频| 国产亚洲一区二区三不卡| 在线精品国产成人综合| 乱熟女高潮一区二区在线| 国产一区二区三区无遮挡| 国产不卡一区不卡二区| 国产av成人精品播放| 日本一区不卡高清更新二区| 国产精品久久人妻无码网站一区 | 人妻教师痴汉电车波多野结衣| 日韩熟女熟妇久久精品综合| 日本一卡2卡3卡四卡精品网站| 69精品丰满人妻无码视频a片| 国产伦一区二区三区久久| 国产国语对白露脸正在播放| 欧美成人精品三级在线观看| 吉川爱美一区二区三区视频| 亚洲精品日韩在线观看| 精品国产中文字幕在线| 亚洲欧洲日韩国内高清| 人妻激情偷乱一区二区三区| 亚洲一二区在线视频播放| 亚洲国产午夜精品理论片妓女| 狠狠色综合久久狠狠色综合| 性欧美乱熟妇xxxx白浆| 亚洲岛国av一区二区| 欧美喷潮最猛视频| 在线观看潮喷失禁大喷水无码| 日韩亚洲视频一区二区三区| 一区二区丝袜美腿视频| 免费人妻无码不卡中文18禁|