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

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

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

      4 第一個壞版本(First Bad Version)

      1 題目

      ??第一個壞版本(First Bad Version)

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

      2 描述

      ??代碼庫的版本號是從 1 到 n 的整數。某一天,有人提交了錯誤版本的代碼,因此造成自身及之后版本的代碼在單元測試中均出錯。請找出第一個錯誤的版本號。
      你可以通過 isBadVersion 的接口來判斷版本號 version 是否在單元測試中出錯。(調用 isBadVersion 的次數越少越好)

      /**
      * class SVNRepo {
      *     public:
      *     static bool isBadVersion(int k);
      * }
      * you can use SVNRepo::isBadVersion(k) to judge whether 
      * the kth code version is bad or not.
      */
      

      ??樣例:

      輸入:n = 5,first bad version is 4
      輸出:4
      解釋:

      isBadVersion(3) -> false
      isBadVersion(5) -> true
      isBadVersion(4) -> true
      因此可以確定第四個版本是第一個錯誤版本。

      3 思路

      ??問題可以轉化為在類似“OOOOXXXX”的序列中尋找分割點的問題,如果不考慮時間復雜度的話,可以從頭遍歷,耗時O(n),但是要求調用isBadVersion()接口的次數越少越好,在有序序列中的查找,考慮使用二分法將耗時降為O(log n)。

      1. 找到中間位置的元素;
      2. 與目標元素比較,確定目標元素所在的區間,縮小目標區間;
      3. 重復以上操作,直到找到或者結束。

      ??套用之前的經典二分搜索[1]的模版,注意事項如下:

      1. 循環中與目標元素的比較變成了對isBadVersion()接口的調用;
      2. 跳出循環之后,對剩下的兩個元素先檢查頭,再檢查尾。

      3.2 圖解

      graph TD A[有序數組'1-Good, 2-Good, 3-Good, 4-Bad, 5-Bad'] --> A1[\拋掉'1-Good, 2-Good'\] A -- 中間位置元素'3-Good',不是壞版本 --> B B[縮小區間至'3-Good, 4-Bad, 5-Bad'] -- 中間位置元素'4-Bad',是壞版本 --> C B --> B1[/拋掉'5-Bad'/] C[縮小區間至'3-Good, 4-Bad'] -- 在頭尾元素中依次尋找目標元素 --> D D(找到目標元素,序號4)

      3.2 時間復雜度

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

      3.3 空間復雜度

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

      4 源碼

      ??注意事項:

      1. C++調用靜態方法使用“類名::函數名”的方式;
      2. 注意接口isBadVersion()的返回值,false表示好版本,true表示壞版本,不要搞反了。

      ??C++版本:

      /**
      * @param n: 版本號數
      * @return: 第一個壞的版本號(序號從1開始)
      */
      int findFirstBadVersion(int n) {
          // write your code here
          int start = 1;
          int end = n;
          int mid = 0;
          while (start + 1 < end)
          {
              mid = start + (end - start) / 2;
              if (SVNRepo::isBadVersion(mid) == true)
              {
                  end = mid;
              }
              else
              {
                  start = mid;
              }
          }
      
          if (SVNRepo::isBadVersion(start) == true)
          {
              return start;
          }
      
          return end;
      }
      

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

      posted @ 2021-06-30 22:07  seedoubleu  閱讀(76)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲中文字幕久久精品码| 夜色福利站WWW国产在线视频 | 久久青青草原亚洲AV无码麻豆| 亚洲精品久久久久国产| 欧美国产精品啪啪| 亚洲爆乳少妇无码激情| 2021亚洲国产精品无码| 国产成人a在线观看视频| 亚洲一区二区三区水蜜桃| 日本一区二区三区在线播放| 亚洲av成人无码精品电影在线| WWW丫丫国产成人精品| 国产午夜精品福利91| 亚洲国产精品久久久久秋霞| 久热天堂在线视频精品伊人| 国产一区二区三区四区激情| 日韩中文字幕免费在线观看| 成人啪精品视频网站午夜| 国产av一区二区不卡| 国产白嫩护士在线播放| 伊宁县| L日韩欧美看国产日韩欧美| 欧美巨大极度另类| 亚洲国产成人精品女人久| 亚洲愉拍一区二区三区| 亚洲成av人片在线观看www| 亚洲精品韩国一区二区| 国产亚洲一二三区精品| 精品人妻一区二区| 国产69精品久久久久99尤物 | 久久人人爽人人爽人人av| 麻豆成人精品国产免费| 午夜精品亚洲一区二区三区| 天堂在线www天堂中文在线| 国产口爆吞精在线视频2020版| 午夜福利在线观看入口| 亚洲香蕉网久久综合影视| 国产自拍偷拍视频在线观看| 国产日韩综合av在线| 岛国av无码免费无禁网站| 91福利一区福利二区|