Leetcode-每日一题【剑指 Offer 06. 从尾到头打印链表】

题目

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

示例 1:

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

限制:

0 <= 链表长度 <= 10000

解题思路

1.题目要求我们从尾到头反过来返回每个节点的值,这道题我们可以用栈去解决,但是我们还可以采用另一种方法。就是我们可以新建一个数组,然后去遍历我们的链表,将量表中元素倒着放入数组中

2.首先我们先设置一个 count 变量去计算出链表的长度,新建一个与链表长度相同的链表,然后我们去遍历数组,将遍历到的第一个元素放入链表中的倒数第一位,第二个元素放入链表中的倒数第二位,以此类推,直到遍历完整个链表。这时数组中存储的就是原链表的倒叙了,我们直接返回即可。

代码实现

class Solution {
    public int[] reversePrint(ListNode head) {
        if(head == null){
            return new int[0];
        }
        int count = 0;
        ListNode temp = head;
        while(temp != null){
            count++;
            temp = temp.next;
        }
        int[] arr = new int[count];
        int k = arr.length - 1;
        while(head != null){
            arr[k--] = head.val;
            head = head.next;
        }
        return arr;
    }
}

测试结果

Leetcode-每日一题【剑指 Offer 06. 从尾到头打印链表】_第1张图片

Leetcode-每日一题【剑指 Offer 06. 从尾到头打印链表】_第2张图片 

 

你可能感兴趣的:(leetcode,算法,职场和发展,java,链表)