标签:长度 next 通过 div node pre 开始 因此 读取
链表不能像数组一样直接进行随机读取,只能从头结点开始打印链表。
题解:要求从尾到头打印链表,那么首先就是要找到链表的整体长度,通过长度创建数组,然后将链表的第一个节点的值放入数组的最后一个位置,最后的数组正序的值就是链表倒叙的值。
分析:整个题目中会对链表进行两次遍历,需要的额外空间就是链表的长度,因此时间为O(n),空间为O(n)。
完整代码如下:
1 /** 2 * @author: wooch 3 * @create: 2020/02/21 4 */ 5 6 /** 7 * 面试题06. 从尾到头打印链表 8 * 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 9 */ 10 public class P06_ReversePrint { 11 public int[] reversePrint(ListNode head) { 12 if (head == null) { 13 return new int[0]; 14 } 15 int len = 0; 16 ListNode p = head; 17 while (p != null) { 18 len++; 19 p = p.next; 20 } 21 int[] res = new int[len]; 22 p = head; 23 len--; 24 while (p != null) { 25 res[len--] = p.val; 26 p = p.next; 27 } 28 return res; 29 } 30 }
标签:长度 next 通过 div node pre 开始 因此 读取
原文地址:https://www.cnblogs.com/baishouzu/p/12340878.html