L503 下乙個更大元素 II

2021-10-05 17:26:27 字數 1623 閱讀 1355

下乙個更大元素 ii

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

示例 1:

輸入: [1,2,1]

輸出: [2,-1,2]

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

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

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

1.合併陣列

按順序遍歷,採用的遞減棧,遇到數比當前大的情況,出棧

class

solution

arraydeque

st =

newarraydeque

<

>()

; hashmap

map =

newhashmap

<

>()

;for

(int i =

0; i < len *

2; i++

) st.

push

(i);

}int

ans =

newint

[len]

;for

(int i =

0; i< len; i++

)return ans;

}}

2.從後往前

class

solution

arraydeque

st =

newarraydeque

<

>()

; hashmap

map =

newhashmap

<

>()

;//倒序,這裡維持的是倒序的遞減棧

for(

int i = len *2-

1; i >=

0; i--

) map.

put(i, st.

isempty()

?-1: st.

peek()

);//最大的特點在於每乙個都會賦值

st.push

(num2[i]);

}int

ans =

newint

[len]

;for

(int i =

0; i< len; i++

)return ans;

}}

3.迴圈陣列處理方法

class

solution

ans[i % len]

=(st.

isempty()

?-1: st.

peek()

);//可直接賦值,迴圈陣列的轉換

//會出現兩次賦值,但是最後一次賦值會是準確的值

st.push

(nums[i % len]);

}return ans;

}}

503 下乙個更大元素 II

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

503 下乙個更大元素 II

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

503 下乙個更大元素 II

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