剑指offer__02__输入一个链表,从尾到头打印链表每个节点的值。
2018-01-21 10:05
477 查看
解题思路一:
翻转链表,然后打印,但是这样改变原来的链表import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if (listNode == null) return new ArrayList<Integer>(); //翻转链表,需要空间复杂度为 O(1) ArrayList<Integer> result = new ArrayList<>(); ListNode tail = new ListNode(0); tail.next = null; ListNode currentNode = listNode; while (listNode != null) { currentNode = listNode; listNode = listNode.next; currentNode.next = tail; tail = currentNode; } while (currentNode.next != null) { result.add(currentNode.val); currentNode = currentNode.next; } return result; } }
解题思路二
使用递归 ,优点是不改变原来链表的结构,但是空间复杂度高,需要O(n)import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if (listNode == null) { return new ArrayList<Integer>(); } ArrayList<Integer> res = new ArrayList<>(); printList(res, listNode); return res; } public void printList(ArrayList<Integer> list, ListNode listNode) { if (listNode.next == null){ list.add(listNode.val); return; } printList(list, listNode.next); list.add(listNode.val); } }
相关文章推荐
- java 剑指offer 第三题:输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值
- (PHP实现剑指offer)输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值
- 输入一个链表的头结点,从尾到头反过来打印出每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值
- 输入一个链表,从尾到头打印链表每个节点的值
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值
- 两种方法实现:输入一个链表,从尾到头打印链表每个节点的值
- 输入一个链表,从尾到头打印链表每个节点的值
- 剑指offer-输入一个链表,从尾到头打印链表每个节点的值
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表的头结点,从尾到头反过来打印每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。