牛客:JZ3 从尾到头打印链表
1.1.1题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
1.1.2解法一:利用栈
栈先进后出
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<>(); //创建一个栈
ArrayList<Integer> list = new ArrayList();
while(listNode != null){ //如果当前节点不为空则入栈
stack.add(listNode.val);
listNode = listNode.next;
}
while(!stack.isEmpty()){ //如果栈非空弹栈
list.add(stack.pop());
}
return list;
}
}
时间复杂度O(N),空间复杂度O(N)