【力扣】 503. 下一個更大元素 II
阿新 • • 發佈:2022-05-23
503. 下一個更大元素 II
給定一個迴圈陣列 nums ( nums[nums.length - 1] 的下一個元素是 nums[0] ),返回 nums 中每個元素的 下一個更大元素 。
數字 x 的 下一個更大的元素 是按陣列遍歷順序,這個數字之後的第一個比它更大的數,這意味著你應該迴圈地搜尋它的下一個更大的數。如果不存在,則輸出 -1 。
示例 1:
輸入: nums = [1,2,1]
輸出: [2,-1,2]
解釋: 第一個 1 的下一個更大的數是 2;
數字 2 找不到下一個更大的數;
第二個 1 的下一個最大的數需要迴圈搜尋,結果也是 2。
示例 2:
輸入: nums = [1,2,3,4,3]
輸出: [2,3,4,-1,4]
提示:
1 <= nums.length <= 104
-109 <= nums[i] <= 109
來源:力扣(LeetCode)
連結:https://leetcode.cn/problems/next-greater-element-ii
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
程式碼實現:
class Solution { public: vector<int> nextGreaterElements(vector<int>& nums) { int n=nums.size(); vector<int>res(n,-1); stack<int>stk; for (int i=0;i<n*2;i++) { while(!stk.empty()&&nums[i%n]>nums[stk.top()]) { int j=stk.top(); stk.pop(); res[j]=nums[i%n]; } stk.push(i%n); } return res; } };