算法题:剑指 Offer 06. 从尾到头打印链表(题目+思路+代码+注释)时空复杂度最低 0ms击败100%用户 指针法

在这里插入图片描述

题目

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

示例 1:

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

限制:

0 <= 链表长度 <= 10000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

  • 是个简单题,不多说,即时是用栈、列表这些,其实反正最后要你返回数组,你还是得定义个数组来返回数据,别的不说你用栈、集合占用了空间,速度还没有我定义一个指针直接遍历一遍去看到底多长就把返回的数组定义好,然后再次遍历length自减逆向赋值完成解题。我觉得在没有要求必须用栈的情况下官方解还不如这个好。

代码

public int[] reversePrint(ListNode head) {
        //先遍历一次算长度
        int length = 0;
        ListNode p = head;
        while (p != null) {
            p = p.next;
            length++;
        }
        //根据长度定义要返回的数组并继续从头遍历返回
        int[] ret = new int[length--];
        p = head;
        while (p != null) {
            ret[length--] = p.val;
            p = p.next;
        }
        return ret;
    }
posted @ 2021-08-06 16:48  HumorChen99  阅读(1)  评论(0编辑  收藏  举报  来源