503 下乙個更大元素 II

2021-10-21 06:14:12 字數 988 閱讀 6458

題目

給定乙個迴圈陣列(最後乙個元素的下乙個元素是陣列的第乙個元素),輸出每個元素的下乙個更大元素。數字 x 的下乙個更大的元素是按陣列遍歷順序,這個數字之後的第乙個比它更大的數,這意味著你應該迴圈地搜尋它的下乙個更大的數。如果不存在,則輸出 -1。

示例 1:

輸入: [1,2,1]

輸出: [2,-1,2]

解釋: 第乙個 1 的下乙個更大的數是 2;

數字 2 找不到下乙個更大的數;

第二個 1 的下乙個最大的數需要迴圈搜尋,結果也是 2。

方法:

使用單調棧解決本題。單調棧中儲存的是下標,從棧底到棧頂的下標在陣列中對應的值是單調不公升的。

建立「單調遞減棧」,並對原陣列遍歷一次:

如果棧為空,則把當前元素放入棧內;

如果棧不為空,則需要判斷當前元素和棧頂元素的大小:

如果當前元素比棧頂元素大:說明當前元素是前面一些元素的「下乙個更大元素」,則逐個彈出棧頂元素,直到當前元素比棧頂元素小為止。

如果當前元素比棧頂元素小:說明當前元素的「下乙個更大元素」與棧頂元素相同,則把當前元素入棧。

**:

class

solution

stack.

push

(i%nums.length);}

return arr;

}public

static

void

main

(string[

] args)

;int arr=

nextgreaterelements

(a);

system.out.

println

(arrays.

tostring

(arr));

}}

503 下乙個更大元素 II

給定乙個迴圈陣列 最後乙個元素的下乙個元素是陣列的第乙個元素 輸出每個元素的下乙個更大元素。數字 x 的下乙個更大的元素是按陣列遍歷順序,這個數字之後的第乙個比它更大的數,這意味著你應該迴圈地搜尋它的下乙個更大的數。如果不存在,則輸出 1。class solution return result p...

503 下乙個更大元素 II

給定乙個迴圈陣列 最後乙個元素的下乙個元素是陣列的第乙個元素 輸出每個元素的下乙個更大元素。數字 x 的下乙個更大的元素是按陣列遍歷順序,這個數字之後的第乙個比它更大的數,這意味著你應該迴圈地搜尋它的下乙個更大的數。如果不存在,則輸出 1。示例 1 輸入 1,2,1 輸出 2,1,2 解釋 第乙個 ...

503 下乙個更大元素

給定乙個迴圈陣列 最後乙個元素的下乙個元素是陣列的第乙個元素 輸出每個元素的下乙個更大元素。數字 x 的下乙個更大的元素是按陣列遍歷順序,這個數字之後的第乙個比它更大的數,這意味著你應該迴圈地搜尋它的下乙個更大的數。如果不存在,則輸出 1。示例 1 輸入 1,2,1 輸出 2,1,2 解釋 第乙個 ...