Leetcode 162 尋找峰值

Time: 2019-08-07
難度:中等

題目描述

峰值元素是指其值大于左右相鄰值的元素。

給定一個輸入數(shù)組 nums,其中 nums[i] ≠ nums[i+1]佳鳖,找到峰值元素并返回其索引。

數(shù)組可能包含多個峰值,在這種情況下恋昼,返回任何一個峰值所在位置即可。

你可以假設(shè) nums[-1] = nums[n] = -∞赶促。

示例 1:

輸入: nums = [1,2,3,1]
輸出: 2
解釋: 3 是峰值元素液肌,你的函數(shù)應(yīng)該返回其索引 2。
示例 2:

輸入: nums = [1,2,1,3,5,6,4]
輸出: 1 或 5
解釋: 你的函數(shù)可以返回索引 1鸥滨,其峰值元素為 2嗦哆;
或者返回索引 5, 其峰值元素為 6爵赵。
說明:

你的解法應(yīng)該是 O(logN) 時間復(fù)雜度的吝秕。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/find-peak-element
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán)空幻,非商業(yè)轉(zhuǎn)載請注明出處烁峭。

思路

也是一樣的,用二分法來做秕铛,判斷mid數(shù)字處在的位置是否為上升或下降區(qū)間约郁,以此為依據(jù)該丟掉哪一半。

每次判斷完畢丟掉一半的算法但两,就是二分法鬓梅,時間復(fù)雜度就是O(logn)

代碼

class Solution:
    def findPeakElement(self, nums: List[int]) -> int:
        if nums == None or len(nums) == 0:
            return -1
        # 一定需要的是二分法才比較合適
        start, end = 0, len(nums) - 1
        while start + 1 < end:
            mid = start + (end - start) // 2
            if self.is_increasing(nums[mid], nums[mid+1]):
                start = mid
            else:
                end = mid
        print("start, end: ", start, end)
        
        if nums[start] < nums[end]:
            return end
        else:
            return start
        
    def is_increasing(self, a, b):
        return a < b

這個代碼吧谨湘,執(zhí)行效率還沒下面這個高:

class Solution:
    def findPeakElement(self, nums: List[int]) -> int:
        return nums.index(max(nums))

時空復(fù)雜度分析

時間復(fù)雜度:O(logn)
空間復(fù)雜度:O(1)

相似題目

  1. 有效的山脈數(shù)組
  2. 山脈數(shù)組中的峰值

END.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绽快,一起剝皮案震驚了整個濱河市芥丧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坊罢,老刑警劉巖续担,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異活孩,居然都是意外死亡物遇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門憾儒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來询兴,“玉大人,你說我怎么就攤上這事起趾∈ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵阳掐,是天一觀的道長始衅。 經(jīng)常有香客問我,道長缭保,這世上最難降的妖魔是什么汛闸? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮艺骂,結(jié)果婚禮上诸老,老公的妹妹穿的比我還像新娘琐旁。我一直安慰自己柠偶,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布赔蒲。 她就那樣靜靜地躺著忧额,像睡著了一般厘肮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上睦番,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天类茂,我揣著相機與錄音,去河邊找鬼托嚣。 笑死巩检,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的示启。 我是一名探鬼主播兢哭,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼夫嗓!你這毒婦竟也來了迟螺?” 一聲冷哼從身側(cè)響起冲秽,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎煮仇,沒想到半個月后劳跃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡浙垫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了郑诺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夹姥。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辙诞,靈堂內(nèi)的尸體忽然破棺而出辙售,到底是詐尸還是另有隱情,我是刑警寧澤飞涂,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布旦部,位于F島的核電站,受9級特大地震影響较店,放射性物質(zhì)發(fā)生泄漏士八。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一梁呈、第九天 我趴在偏房一處隱蔽的房頂上張望婚度。 院中可真熱鬧,春花似錦官卡、人聲如沸蝗茁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哮翘。三九已至,卻和暖如春毛秘,著一層夾襖步出監(jiān)牢的瞬間饭寺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工熔脂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留佩研,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓霞揉,卻偏偏與公主長得像旬薯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子适秩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容