剑指offer-3-从尾到头打印链表

从尾到头打印链表

http://www.nowcoder.com/questionTerminal/d0267f7f55b3412ba93bd35cfa8e8035

思路:

  • 从头遍历 :如果知道java ArrayList的 add()方法其实是插入方法add(0,val),在0处插入,后面都往后移动一格,
    理论上可以一次遍历输出,这个方法调用arraycopy方法把后面的元素往后移动一个位置,native方法,效率应该是很高了。
  • 递归(栈):这个思路和前序遍历二叉树一致,递归的缺点在于占内存。
  • 反转链表:利用三个指针反转这个链表,然后遍历。

代码

从头遍历

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> arr=new ArrayList<>();
        while(listNode!=null){
            arr.add(0,listNode.val);
            listNode=listNode.next;
        }
        return arr;
    }
}
剑指offer与数据结构 文章被收录于专栏

本专栏包括剑指offer题目和一些刷题用的数据结构,单调栈,树状数组,差分数组,后面还会更新红黑树等较为复杂的数据结构

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:45
你不要过来啊啊啊啊啊啊啊
码农索隆:对面:“今天你不面也得面”
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 golang
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
下北澤大天使:你是我见过最美的牛客女孩😍
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务