每周一题:从头到尾打印链表(更新JS)

题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例 1:

输入:head = [1,3,2]
输出:[2,3,1]

 通过率:

代码:

var reversePrint = function(head) {
    let result = [];
 if(head==null){
  return [];
 }
    while(head != null) {
        result.unshift(head.val);
        head = head.next;
    }
    return result;
};
 
思路:
这道题就类似于反转数组一样,首先建立一个空数组用来存放反转之后的链表数值,其次建立while循环,排除掉链表为空的这种情况,即能保证链表不为空进入循环。
然后用unshift()方法向数组的开头添加一个或更多元素,并返回新的长度(不过这里不需要我们返回新的长度,只需要添加元素就好了),然后将原本链表中的数据元素一个一个存入空数组中,因为unshift方法是从数组开头添加元素,所以这里我们不需要再对链表或者数组做任何翻转,直接输入就可以了。
最后再返回数组,即为答案。
唯一缺点就是耗时还是太长,不太令人满意。
原文地址:https://www.cnblogs.com/sayg-1207/p/13232779.html