最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)LeetCode(153.尋找旋轉(zhuǎn)有序數(shù)組的最小值)

 更新時間:2021年07月29日 16:17:08   作者:Grandyang  
這篇文章主要介紹了C++實現(xiàn)LeetCode(153.尋找旋轉(zhuǎn)有序數(shù)組的最小值),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

[LeetCode] 153. Find Minimum in Rotated Sorted Array 尋找旋轉(zhuǎn)有序數(shù)組的最小值

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e.,  [0,1,2,4,5,6,7] might become  [4,5,6,7,0,1,2]).

Find the minimum element.

You may assume no duplicate exists in the array.

Example 1:

Input: [3,4,5,1,2]
Output: 1

Example 2:

Input: [4,5,6,7,0,1,2]
Output: 0

這道尋找旋轉(zhuǎn)有序數(shù)組的最小值肯定不能通過直接遍歷整個數(shù)組來尋找,這個方法過于簡單粗暴,這樣的話,旋不旋轉(zhuǎn)就沒有意義。應該考慮將時間復雜度從簡單粗暴的 O(n) 縮小到 O(lgn),這時候二分查找法就浮現(xiàn)在腦海。這里是比較難的那一類,沒有固定的 target 值比較,而是要跟數(shù)組中某個特定位置上的數(shù)字比較,決定接下來去哪一邊繼續(xù)搜索。這里用中間的值 nums[mid] 和右邊界值 nums[right] 進行比較,若數(shù)組沒有旋轉(zhuǎn)或者旋轉(zhuǎn)點在左半段的時候,中間值是一定小于右邊界值的,所以要去左半邊繼續(xù)搜索,反之則去右半段查找,最終返回 nums[right] 即可,參見代碼如下:

解法一:

class Solution {
public:
    int findMin(vector<int>& nums) {
        int left = 0, right = (int)nums.size() - 1;
        while (left < right) {
            int mid = left + (right - left) / 2;
            if (nums[mid] > nums[right]) left = mid + 1;
            else right = mid;
        }
        return nums[right];
    }
};

下面這種分治法 Divide and Conquer 的解法,這里每次將區(qū)間 [start, end] 從中間 mid 位置分為兩段,分別調(diào)用遞歸函數(shù),并比較返回值,每次取返回值較小的那個即可,參見代碼如下:

解法二:

討論:對于數(shù)組中有重復數(shù)字的情況,請參見另一篇博文 Find Minimum in Rotated Sorted Array II。

Github 同步地址:

https://github.com/grandyang/leetcode/issues/153

類似題目:

Search in Rotated Sorted Array

Find Minimum in Rotated Sorted Array II

參考資料:

https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/

https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/discuss/48493/Compact-and-clean-C%2B%2B-solution

https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/discuss/48484/A-concise-solution-with-proof-in-the-comment

到此這篇關于C++實現(xiàn)LeetCode(153.尋找旋轉(zhuǎn)有序數(shù)組的最小值)的文章就介紹到這了,更多相關C++實現(xiàn)尋找旋轉(zhuǎn)有序數(shù)組的最小值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C 語言編寫一個計算器界面(可視化界面和多功能)

    C 語言編寫一個計算器界面(可視化界面和多功能)

    今天給大家分享一個計算器功能,主要功能有加法減法乘除法求余功能,用戶可以在主菜單選擇需要計算的功能,接下來根據(jù)用戶輸入的數(shù)字進行計算輸出結(jié)果,喜歡的朋友拿去用吧
    2021-06-06
  • VC++時鐘函數(shù)

    VC++時鐘函數(shù)

    VC中提供了很多關于時間操作的函數(shù),編寫程序時我們可以跟據(jù)定時的不同精度要求選擇不同的時間函數(shù)來完成定時和計時操作
    2015-06-06
  • c++如何使用openssl接口來生成隨機數(shù)

    c++如何使用openssl接口來生成隨機數(shù)

    OpenSSL是一個強大的加密庫,不僅支持加密解密,還能生成隨機數(shù),設置過程包括下載資源文件、配置項目及修改屬性頁等步驟,確保庫文件正確包含,在Visual Studio中正確配置后,可使用RAND_bytes函數(shù)生成隨機數(shù),此過程需要注意文件路徑和附加目錄的設置
    2024-10-10
  • 詳解VS2019+OpenCV-4-1-0+OpenCV-contrib-4-1-0

    詳解VS2019+OpenCV-4-1-0+OpenCV-contrib-4-1-0

    這篇文章主要介紹了詳解VS2019+OpenCV-4-1-0+OpenCV-contrib-4-1-0,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • 從c++標準庫指針萃取器談一下traits技法(推薦)

    從c++標準庫指針萃取器談一下traits技法(推薦)

    本篇文章基于gcc中標準庫源碼剖析一下標準庫中的模板類pointer_traits,并且以此為例理解一下traits技法,對c++ traits技法源碼分析感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • C語言中的冒泡排序問題

    C語言中的冒泡排序問題

    這篇文章主要介紹了C語言中的冒泡排序問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Qt使用隨機驗證碼的實現(xiàn)示例

    Qt使用隨機驗證碼的實現(xiàn)示例

    有時候在登錄界面需要驗證碼功能,這樣能夠防止被惡意程序攻擊,本文主要介紹了Qt使用隨機驗證碼的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • C++ cin.get用法案例詳解

    C++ cin.get用法案例詳解

    這篇文章主要介紹了C++ cin.get用法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C語言數(shù)據(jù)類型枚舉enum全面詳解示例教程

    C語言數(shù)據(jù)類型枚舉enum全面詳解示例教程

    生活中有很多地方會用到枚舉,比如一周有7天,可以一一枚舉;性別有男、女...等等都可以可以一一枚舉,今天來和筆者一起學習一下c語言枚舉吧
    2021-10-10
  • c語言動態(tài)內(nèi)存分配知識點及實例

    c語言動態(tài)內(nèi)存分配知識點及實例

    在本篇文章里小編給大家整理的是關于c語言動態(tài)內(nèi)存分配知識點及實例,需要的朋友們可以學習下。
    2020-03-03

最新評論

垫江县| 双桥区| 马龙县| 榆树市| 青海省| 砚山县| 绵竹市| 浦县| 茶陵县| 农安县| 梅河口市| 邵阳县| 灌阳县| 富平县| 灌阳县| 临颍县| 泰和县| 石林| 南通市| 延庆县| 石河子市| 隆昌县| 偏关县| 本溪市| 疏附县| 明溪县| 定南县| 石阡县| 仁寿县| 宜都市| 湟源县| 博乐市| 白玉县| 苍山县| 察隅县| 礼泉县| 云梦县| 海林市| 绿春县| 中牟县| 宁国市|