下一个最大的元素。
时间复杂度:O(n)。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
vector<int> nextLargerNodes(ListNode* head) {
vector<int> ans;
stack<pair<int,int>> s;
int idx = 0;
while (head) {
while (!s.empty() && head->val > s.top().second) {
ans[s.top().first] = head->val;
s.pop();
}
s.push(pair<int,int>(idx, head->val));
ans.push_back(0);
idx++;
head = head->next;
}
return ans;
}
};