下乙個更大元素 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 解釋 第乙個 ...