Leetcode算法题501-600


501-510

503. 下一个更大元素 II

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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 许可协议。转载请注明来源 不二 !
  目录