题目
解答
class Solution {Stack<Integer> stack = new Stack<>();List<Integer> values = new LinkedList<>();public int[] nextLargerNodes(ListNode head) {nextLargerNodes2(head);return values.stream().mapToInt(x -> x).toArray();}public void nextLargerNodes2(ListNode head) {if (head == null) {return;}nextLargerNodes2(head.next);while (!stack.isEmpty() && stack.peek() <= head.val) {stack.pop();}int value = !stack.isEmpty() ? stack.peek() : 0;values.addFirst(value);stack.push(head.val);}
}
总结
通过递归,实现从最末尾的对象开始遍历,当输入的规模变大时,可能出现栈溢出的现象。