單調棧學習筆記

2021-10-06 15:50:29 字數 2211 閱讀 5625

定義: 單調棧就是棧內元素遞增或者單調遞減的棧,並且只能在棧頂操作。單調棧的維護是o(n)的時間複雜度,所有元素只會進進棧一次

性質

單調棧裡面的元素具有單調性;

元素加入棧前會把棧頂破壞單調性的元素刪除;

使用單調棧可以找到元素向左遍歷的第乙個比他小的元素(單增棧),也可以找到元素向左遍歷第乙個比他大的元素(單減棧);

一般使用單調棧的題目具有以下的兩點:

注意:雖然稱作是遞增遞減棧,但是實際儲存的值並不是單調的,因為可以存座標,只有座標帶入陣列才是單調的。這樣既可以儲存陣列的值,也可以儲存陣列下標。如下面的2,3,4例題。

例題

1、leetcode 496. next greater element i

class

solution

stk.

push

(nums2[i]

);}

for(

int i =

0; i < nums1.

size()

; i++

)return res;

}

}

;

class

solution

stk.

push

(i);

}return res;}}

;

3、leetcode 84. largest rectangle in histogram

class

solution

ss.push

(i);

}return res;}}

;

4、leetcode 456. 132 pattern

class

solution

ss.push

(i);

}int min = nums[0]

;for

(int i =

1; i < n ; i++)if

(nums[i]

> right_min[i]

&& min < right_min[i]

)return

true;}

return

false;}

};

其他使用單調棧的例題仰視奶牛:找出每頭奶牛最近仰視物件

發射站;發出的能量只被兩邊最近的且比它高的發射站接收

leetcode monotone stack summary 單調棧小結

單調棧的介紹以及一些基本性質

秦淮河單調棧講義

來自leetcode的單調棧題目推薦:

定義: 單調棧就是棧內元素遞增或者單調遞減的棧,並且只能在棧頂操作。單調棧的維護是o(n)的時間複雜度,所有元素只會進進棧一次

性質

單調棧裡面的元素具有單調性;

元素加入棧前會把棧頂破壞單調性的元素刪除;

使用單調棧可以找到元素向左遍歷的第乙個比他小的元素(單增棧),也可以找到元素向左遍歷第乙個比他大的元素(單減棧);

一般使用單調棧的題目具有以下的兩點:

注意:雖然稱作是遞增遞減棧,但是實際儲存的值並不是單調的,因為可以存座標,只有座標帶入陣列才是單調的。這樣既可以儲存陣列的值,也可以儲存陣列下標。如下面的2,3,4例題。

例題

1、leetcode 496. next greater element i

class

solution

stk.

push

(nums2[i]

);}

for(

int i =

0; i < nums1.

size()

; i++

)return res;

}

單調佇列和單調棧學習筆記

單調棧 單調棧是指乙個棧內部的元素是具有嚴格單調性的一種資料結構,分為單調遞增棧和單調遞減棧。單調棧有兩個性質 1.滿足從棧頂到棧底的元素具有嚴格的單調性 2.滿足棧的後進先出特性越靠近棧底的元素越早進棧 元素進棧過程 對於乙個單調遞增棧來說 若當前進棧的元素為 a 如果a 棧頂元素則直接將a 進棧...

學習筆記 單調佇列與單調棧

乙個具有單調性的棧。插入乙個元素時,如果直接插入不滿足單調性,就一直彈出,直到插入後滿足單調為止。luogu p1886 loj p10175 meaning of the problem 給你乙個數列 a 多組長度為 k 的區間的最大值與最小值。solution 一道非常經典的單調佇列題。以最大值...

單調棧演算法筆記

定義 單調棧就是棧內元素遞增或者單調遞減的棧,並且只能在棧頂操作。單調棧的維護是o n 的時間複雜度,所有元素只會進進棧一次 性質 單調棧裡面的元素具有單調性 元素加入棧前會把棧頂破壞單調性的元素刪除 使用單調棧可以找到元素向左遍歷的第乙個比他小的元素 單增棧 也可以找到元素向左遍歷第乙個比他大的元...