單調棧 單調遞減棧,棧底到棧頂,元素依次減小。
個人認為是比武棧。
有個土財主要嫁閨女,全城的小夥子都想去試試,4.1號正式開始招親,3.31大家就來排隊。本來是是按照先來後到的順序進行排隊,但是排在後面的武功高的人不服氣,就把前面武功不如自己的打跑了。
一直遇到排在自己前面武功比自己高強的人,他才會老老實實的排隊。
最後演變成:每來乙個人,都會和隊尾的人比較,能打得過,就把他打跑,一直遇到自己打不過的人,再老老實實的排隊,被打跑的人,會掏個小本本,默默的記下打跑自己的人,君子報仇,十年不晚。
這樣,每乙個被打跑的人,都知道在自己後面,離自己最近的,比自己厲害的人是誰;每乙個能留在隊中的人,都可以和地主說,我後面沒有比我更加厲害的了,你把女兒嫁給我吧。
**如下:
class給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。solution
st.push(i);
}return
res;}};
示例 1:
輸入:height = [0,1,0,2,1,0,1,3,2,1,2,1]示例 2:輸出:6
解釋:上面是由陣列 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種情況下,可以接 6 個單位的雨水(藍色部分表示雨水)。
輸入:height = [4,2,0,3,2,5]輸出:9
class84. 柱狀圖中最大的矩形solution
}st.push(i);
}return
result;
}};int
main()
;
//vectorv;
cout <
}
給定 n 個非負整數,用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰,且寬度為 1 。
求在該柱狀圖中,能夠勾勒出來的矩形的最大面積。
以上是柱狀圖的示例,其中每個柱子的寬度為 1,給定的高度為 [2,1,5,6,2,3]。
圖中陰影部分為所能勾勒出的最大矩形面積,其面積為 10 個單位。
示例:輸入: [2,1,5,6,2,3]
輸出: 10
class給你兩個 沒有重複元素 的陣列solution
st.push(i);
}stack
st2;
vector
res2(heights.size(),-1
);
//逆序尋找最近的比自己小的值
for (int i = heights.size() - 1; i >= 0; --i)
st2.push(i);
}for (int i = 0; i < heights.size(); ++i)
return
result;}};
nums1
和nums2
,其中nums1
是nums2
的子集。
請你找出nums1
中每個元素在nums2
中的下乙個比其大的值。
nums1
中數字x
的下乙個更大元素是指x
在nums2
中對應位置的右邊的第乙個比x
大的元素。如果不存在,對應位置輸出-1
。
示例 1:
輸入: nums1 = [4,1,2], nums2 = [1,3,4,2].示例 2:輸出: [-1,3,-1]
解釋: 對於 num1 中的數字 4 ,你無法在第二個陣列中找到下乙個更大的數字,因此輸出 -1 。
對於 num1 中的數字 1 ,第二個陣列中數字1右邊的下乙個較大數字是 3 。
對於 num1 中的數字 2 ,第二個陣列中沒有下乙個更大的數字,因此輸出 -1 。
輸入: nums1 = [2,4], nums2 = [1,2,3,4].輸出: [3,-1]
解釋: 對於 num1 中的數字 2 ,第二個陣列中的下乙個較大數字是 3 。
對於 num1 中的數字 4 ,第二個陣列中沒有下乙個更大的數字,因此輸出 -1 。
class503. 下乙個更大元素 iisolution
st.push(0);
for (int i = 1; i < nums2.size(); i++)
st.pop();
}st.push(i);
}return
result;}};
給定乙個迴圈陣列(最後乙個元素的下乙個元素是陣列的第乙個元素),輸出每個元素的下乙個更大元素。數字 x 的下乙個更大的元素是按陣列遍歷順序,這個數字之後的第乙個比它更大的數,這意味著你應該迴圈地搜尋它的下乙個更大的數。如果不存在,則輸出 -1。
示例 1:
輸入: [1,2,1]輸出: [2,-1,2]
解釋: 第乙個 1 的下乙個更大的數是 2;
數字 2 找不到下乙個更大的數;
第二個 1 的下乙個最大的數需要迴圈搜尋,結果也是 2。
classsolution
st.push(i %size);
}return
res;}};
單調棧 模板 單調棧模板
biu 單調棧主要用於求取左邊第乙個比它大,或者比它小的數。就比如站隊隨便排成一列,可以求到每個人後面第乙個比他高的人。同理可以推廣至右邊,比它矮均可。這就是單調遞增棧 遞減棧,從前至 棧,從後向前入棧的區別了。單調棧比較抽象,非常具有智慧型的想法,可應用的場景相當少,根據幾個經典題目體會它的用法會...
單調佇列 單調棧
參考文章 單調佇列 poj 2823 給定乙個數列,從左至右輸出每個長度為m的數列段內的最小數和最大數。數列長度 n 106 m n n 106,m n n 106 m n 直接暴力求解複雜度在0 mn 可以考慮維護區間最值,單調佇列則是維護區間佇列的強大 單調佇列的定義 單調佇列實現的大致過程 1...
棧和佇列 單調佇列 單調棧
講解部落格鏈結 一 單調棧 1 什麼是單調棧?單調棧是指乙個棧內部元素具有嚴格單調性 單調遞增,單調遞減 的一種資料結構。2 單調棧的兩個性質 滿足從棧頂到棧底具有嚴格的單調性 滿足後進先出的特徵,越靠近棧底的元素越早的進棧。3 元素進棧的過程 對於當前進棧元素x 如果x 棧頂元素,x 進棧。否則 ...