leetcode 456 132模式 貪心 單調棧

2021-09-11 15:16:32 字數 1032 閱讀 5662

給定乙個整數序列:a1, a2, ..., an,乙個132模式的子串行 ai, aj, ak被定義為:當i<j<k時,ai< ak< aj。設計乙個演算法,當給定有 n 個數字的序列時,驗證這個序列中是否含有132模式的子串行。

注意:n 的值小於15000。

示例1:

輸入: [1, 2, 3, 4]

輸出: false

解釋: 序列中不存在132模式的子串行。

示例 2:

輸入: [3, 1, 4, 2]

輸出: true

解釋: 序列中有 1 個132模式的子串行: [1, 4, 2].

示例 3:

輸入: [-1, 3, 2, 0]

輸出: true

解釋: 序列中有 3 個132模式的的子串行: [-1, 3, 2], [-1, 3, 0] 和 [-1, 2, 0].

解法一:

第乙個出現在腦中的就是三重暴力迴圈,結果超時。我們只有想辦法優化啦,先固定乙個數字,然後遍歷另外兩個數字,固定誰呢,當然是固定最小的那個了。我們維護乙個變數iv,初始化為整型最大值,如果當前值大於iv,這裡我們已經找到了ai和aj了,只用遍歷j後面的元素看能不能滿足條件,滿足返回true即可。

class solution 

//如果當前數<=棧頂,可以直接放,這是乙個遞減棧

stk.push(nums[i]);

}return false;

}};

思考:驗證性的題目可以用貪心解決

Leetcode 跳躍遊戲 貪心

題目描述 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。示例 2 輸入 3,2,1,0,4 輸...

貪心演算法(leetcode)

1 分糖果 455 用最小的糖果大小滿足需求最小的孩子 class solution else return count 2 搖擺序列 376 遍歷一次,儲存乙個狀態,如果狀態為上公升,變為下降,則長度 1,下降變上公升 1 class solution def wigglemaxlength se...

Leetcode之貪心法

目錄 1.gas station 2.jump game 3.jump game ii 4.minimum window substring 5.maximum subarray 6.maximal rectangle 題目 環形路上有n個加油站,第i個加油站的汽油量是gas i 你有一輛車,車的油...