《剑指offer》之从“尾到头打印链表”题解

简介: 《剑指offer》之从“尾到头打印链表”题解

题目:

https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/

题解:

一说到链表题,我们第一就会想到迭代算法和递归算法,但是看下本题的要求,是从尾到头打印链表,就不需要搞一个新的链表,所以迭代算法可以先pass掉,因此我们优先考虑递归,可以不断寻找链表的Next,直到Next为null,然后不断向上返回值。

图解:

代码:

链表类:

static class ListNode {
    int val;
    ListNode next;
    ListNode(int x) {
        val = x;
    }
}

算法:

public class Solution {
    /**
     * 临时数组
     */
    ArrayList<Integer> tmp = new ArrayList<>();
    public int[] reversePrint(ListNode head) {
        //先进行递归
        recur(head);
        int[] res = new int[tmp.size()];
        //将List的值传给int数组
        for (int i = 0; i < res.length; i++) {
            res[i] = tmp.get(i);
        }
        return res;
    }
    /**
     * 递归方法
     *
     * @param head
     */
    public void recur(ListNode head) {
        //递归的终止条件
        if (head == null) {
            return;
        }
        //进行递归
        recur(head.next);
        tmp.add(head.val);
    }
}

测试:

public static void main(String[] args) {
    ListNode listNode = new ListNode(1);
    listNode.next = new ListNode(3);
    listNode.next.next = new ListNode(2);
    Solution solution = new Solution();
    int[] ints = solution.reversePrint(listNode);
    for (int i : ints) {
        System.out.println(i);
    }
}
相关文章
|
7月前
《剑指offer》——合并两个排序的链表
《剑指offer》——合并两个排序的链表
|
2月前
(剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
(剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
56 0
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 22. 链表中倒数第k个节点
Leetcode题目"剑指 Offer 22. 链表中倒数第k个节点"的Python解决方案,使用双指针法找到并返回链表中倒数第k个节点。
58 5
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 18. 删除链表的节点
Leetcode题目"剑指 Offer 18. 删除链表的节点"的Python解决方案,通过使用双指针法找到并删除链表中值为特定数值的节点,然后返回更新后的链表头节点。
46 4
|
7月前
|
Java C语言
剑指offer(牛客)——合并两个排序的链表
剑指offer(牛客)——合并两个排序的链表
46 1
|
7月前
|
存储 Java C语言
剑指offer(牛客)——从尾到头打印链表
剑指offer(牛客)——从尾到头打印链表
44 1
|
7月前
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
|
7月前
【一刷《剑指Offer》】面试题 16:反转链表
【一刷《剑指Offer》】面试题 16:反转链表
|
7月前
【一刷《剑指Offer》】面试题 15:链表中倒数第 k 个结点
【一刷《剑指Offer》】面试题 15:链表中倒数第 k 个结点
|
7月前
|
机器学习/深度学习
【一刷《剑指Offer》】面试题 13:在 O(1) 时间删除链表结点
【一刷《剑指Offer》】面试题 13:在 O(1) 时间删除链表结点

热门文章

最新文章