Nowcoder java-从尾到头打印链表
(题目来自牛客网)
思路
方法一:利用栈,先进后出
方法二:ArrayList 中有个方法是 add(index,value),可以指定 index 位置插入value 值。所以我们在遍历 listNode 的同时将每个遇到的值插入到 list 的 0 位置,最后输出 listNode, 即可得到逆序链表
代码
import java.util.ArrayList;
import java.util.Stack;
public class PrintListFromTailToHead {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
// 方法一:利用栈,先进后出
// ArrayList list = new ArrayList();
// Stack stack = new Stack();
// while (listNode != null) {
// stack.push(listNode.val);
// listNode = listNode.next;
// }
// while (!stack.empty()) {
// list.add(stack.pop());
// }
// return list;
// }
//方法二:ArrayList 中有个方法是 add(index,value),可以指定 index 位置插入 value 值
//所以我们在遍历 listNode 的同时将每个遇到的值插入到 list 的 0 位置,最后输出 listNode 即可得到逆序链表
ArrayList<Integer> list = new ArrayList<>();
ListNode tmp = listNode;
while (tmp != null) {
list.add(0, tmp.val);
tmp = tmp.next;
}
return list;
}
}