欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2021年07月29日 16:17:08   作者:Grandyang  
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(153.尋找旋轉(zhuǎn)有序數(shù)組的最小值),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(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ù)組的最小值肯定不能通過直接遍歷整個(gè)數(shù)組來尋找,這個(gè)方法過于簡(jiǎn)單粗暴,這樣的話,旋不旋轉(zhuǎn)就沒有意義。應(yīng)該考慮將時(shí)間復(fù)雜度從簡(jiǎn)單粗暴的 O(n) 縮小到 O(lgn),這時(shí)候二分查找法就浮現(xiàn)在腦海。這里是比較難的那一類,沒有固定的 target 值比較,而是要跟數(shù)組中某個(gè)特定位置上的數(shù)字比較,決定接下來去哪一邊繼續(xù)搜索。這里用中間的值 nums[mid] 和右邊界值 nums[right] 進(jìn)行比較,若數(shù)組沒有旋轉(zhuǎn)或者旋轉(zhuǎn)點(diǎn)在左半段的時(shí)候,中間值是一定小于右邊界值的,所以要去左半邊繼續(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ù),并比較返回值,每次取返回值較小的那個(gè)即可,參見代碼如下:

解法二:

討論:對(duì)于數(shù)組中有重復(fù)數(shù)字的情況,請(qǐng)參見另一篇博文 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

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

相關(guān)文章

  • C語言中求字符串長(zhǎng)度的函數(shù)的幾種實(shí)現(xiàn)方法

    C語言中求字符串長(zhǎng)度的函數(shù)的幾種實(shí)現(xiàn)方法

    這篇文章主要介紹了C語言中求字符串長(zhǎng)度的函數(shù)的幾種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2018-08-08
  • 解析之C++的列表初始化語法

    解析之C++的列表初始化語法

    有朋友在使用std::array時(shí)發(fā)現(xiàn)一個(gè)奇怪的問題:當(dāng)元素類型是復(fù)合類型時(shí),編譯通不過。按說std::array和原生數(shù)組的行為幾乎是一樣的,可為什么當(dāng)元素類型不同時(shí),初始化語法還會(huì)有差別?這篇文章會(huì)介紹這個(gè)問題的原理,以及正確的解決方式。
    2021-05-05
  • C/C++運(yùn)用WMI接口實(shí)現(xiàn)查詢系統(tǒng)信息

    C/C++運(yùn)用WMI接口實(shí)現(xiàn)查詢系統(tǒng)信息

    Windows?Management?Instrumentation(WMI)是一種用于管理和監(jiān)視Windows操作系統(tǒng)的框架,本文主要介紹了如何運(yùn)用WMI接口實(shí)現(xiàn)查詢系統(tǒng)信息,感興趣的可以了解下
    2023-11-11
  • C語言預(yù)編譯#define(預(yù)處理)

    C語言預(yù)編譯#define(預(yù)處理)

    這篇文章主要介紹了C語言預(yù)編譯#define(預(yù)處理),#define 機(jī)制包括了一個(gè)機(jī)制,允許把參數(shù)替換到文本中,這種實(shí)現(xiàn)通常稱為宏或者宏定義,下文更多的相關(guān)資料介紹需要的小伙伴可以參考一下
    2022-04-04
  • C++冒泡排序算法實(shí)例

    C++冒泡排序算法實(shí)例

    這篇文章主要介紹了C++冒泡排序算法實(shí)例,本文先是介紹了什么是冒泡排序,然后給出了實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-10-10
  • Qt?TCP網(wǎng)絡(luò)通信學(xué)習(xí)

    Qt?TCP網(wǎng)絡(luò)通信學(xué)習(xí)

    用于數(shù)據(jù)傳輸?shù)牡蛯泳W(wǎng)絡(luò)協(xié)議,多個(gè)物聯(lián)網(wǎng)協(xié)議都是基于TCP協(xié)議的,這篇文章為大家介紹了Qt?TCP網(wǎng)絡(luò)通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Qt實(shí)現(xiàn)UDP多線程數(shù)據(jù)處理及發(fā)送的簡(jiǎn)單實(shí)例

    Qt實(shí)現(xiàn)UDP多線程數(shù)據(jù)處理及發(fā)送的簡(jiǎn)單實(shí)例

    本文主要介紹了Qt實(shí)現(xiàn)UDP多線程數(shù)據(jù)處理及發(fā)送的簡(jiǎn)單實(shí)例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Qt地圖自適應(yīng)拉伸的實(shí)現(xiàn)示例

    Qt地圖自適應(yīng)拉伸的實(shí)現(xiàn)示例

    最近需要寫一個(gè)程序,要是讓qt到程序自適應(yīng),本文主要介紹了Qt地圖自適應(yīng)拉伸的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • C語言實(shí)現(xiàn)簡(jiǎn)易連連看游戲

    C語言實(shí)現(xiàn)簡(jiǎn)易連連看游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡(jiǎn)易連連看游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 詳解C++中shared_ptr的使用教程

    詳解C++中shared_ptr的使用教程

    shared_ptr能夠記錄對(duì)象被引用的次數(shù),主要被用來管理動(dòng)態(tài)創(chuàng)建的對(duì)象的銷毀,這里我們就來詳解C++中shared_ptr的使用教程,需要的朋友可以參考下
    2016-05-05

最新評(píng)論