class Solution {
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
//x 在 nums2 中對應(yīng)位置 右側(cè) 的 第一個 比 x 大的元素
int[] res = new int[nums1.length];
Arrays.fill(res,-1);
Deque<Integer> stack = new ArrayDeque<>();
Map<Integer,Integer> map = new HashMap<>();
for(int i = 0;i < nums2.length;i++){
//先處理另一個棧,按單調(diào)棧處理法,保存到map,通過元素值與大于的元素值進(jìn)行映射
while(!stack.isEmpty()&&nums2[i] > nums2[stack.peek()]){
int number = nums2[stack.pop()];
map.put(number,nums2[i]);
}
stack.push(i);
}
for(int i = 0; i < nums1.length;i++){
if(map.containsKey(nums1[i])){
res[i] = map.get(nums1[i]);
}
}
return res;
}
}
下一個更大元素 I
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 496. 下一個更大元素 I[https://leetcode-cn.com/problems/next-grea...
- 摘要 單調(diào)棧方法的時間復(fù)雜度是O(n),只需要一層循環(huán)遍歷一次輸入數(shù)組,代碼更簡潔,邏輯更巧妙。 棧內(nèi)元素從棧頂?shù)?..
- 下一個更大元素 I 題目描述:給你兩個 沒有重復(fù)元素 的數(shù)組 nums1 和 nums2 ,其中nums1 是 n...
- 單調(diào)棧: 通常是一維數(shù)組,要尋找任一個元素的右邊或者左邊第一個比自己大或者小的元素的位置,此時我們就要想到可以用單...
- 每日溫度 力扣題目鏈接[https://leetcode.cn/problems/daily-temperatur...