Leetcode算法题501-600


501-510

503. 下一个更大元素 II

class Solution {
public:
    vector<int> nextGreaterElements(vector<int> &nums) {
        int n = nums.size(), x;
        stack<int> stk;
        vector<int> res(n);
        // 破环成链,将原本的环变成两个nums的链条
        nums.insert(nums.end(), nums.begin(), nums.end());
        for (int i = 2 * n - 1; i >= 0; i--) {
            x = nums[i];
            while (stk.size() && x >= stk.top()) stk.pop();
            // 结果只存放0到nums.size()-1之间的数
            if (i < n) {
                if (stk.empty()) res[i] = -1;
                else res[i] = stk.top();
            }
            stk.push(x);
        }
        return res;
    }
};

511-520

521-530

531-540

541-550

551-560

561-570

571-580

581-590

591-600


文章作者: 不二
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 不二 !
  目录