程式語言 - LeetCode - C++ - 503. Next Greater Element II



題目:


解答:

class Solution {
public:
    vector<int> nextGreaterElements(vector<int>& nums) {
        int n = nums.size();
        stack<int> st;
        vector<int> ans(n, -1);

        for (int i = 0; i < n * 2; ++i) {
            int k = nums[i % n];

            while (!st.empty() && nums[st.top()] < k) {
                ans[st.top()] = k;
                st.pop();
            }

            if (i < n) {
                st.push(i);
            }
        }

        return ans;
    }
};