[Leetcode456]132模式 - 单调栈
[Leetcode456]132模式 - 單調(diào)棧
給你一個(gè)整數(shù)數(shù)組 nums ,數(shù)組中共有 n 個(gè)整數(shù)。132 模式的子序列 由三個(gè)整數(shù) nums[i]、nums[j] 和 nums[k] 組成,并同時(shí)滿(mǎn)足:i < j < k 和 nums[i] < nums[k] < nums[j] 。
暴力遍歷,O3的復(fù)雜度,必超時(shí)。
為什么用單調(diào)棧: 1 - 3 - 2 模式,在數(shù)組中,有局部單調(diào)遞增遞減趨勢(shì),都可以使用單調(diào)棧。
從后往前遍歷,為什從后往前遍歷,k值是中間量?
思路:維護(hù)j棧,因?yàn)?j 比 k大,因此還是維護(hù)一個(gè)遞減棧,
以 3 2 4 5 6 4 7(3 2 5 6 4 5)為例子, stack_k 7->4 遇到了6,發(fā)現(xiàn)6比4 大,則4 出棧作為k,6填入作為j,
繼續(xù)維護(hù)j棧, 6 -> 5 -> 4 -> 2,走到這里可以發(fā)現(xiàn),已經(jīng)滿(mǎn)足條件,完成遍歷。
從解題思路來(lái)說(shuō),對(duì)于局部遞增遞減序列來(lái)說(shuō),算法最好的切入點(diǎn)在于中間量,可以減少大量判斷語(yǔ)句。
總結(jié)
以上是生活随笔為你收集整理的[Leetcode456]132模式 - 单调栈的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言中123 234 345 456,
- 下一篇: ensp安装对电脑配置要求高吗_直线导轨