給定乙個整數序列: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 你有一輛車,車的油...