zoukankan      html  css  js  c++  java
  • 【剑指Offer】从尾到头打印链表

    剑指Offer 从尾到头打印链表

    题目描述

    输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

    解法1

    这道题主要思路是while循环从头遍历整个列表,将每个元素插入到List中,因为要求是从尾到头,所以每次插入时利用Insert函数不断将元素插入到第一的位置

    实现代码

    public class ListNode
    {
        public int val;
        public ListNode next;
        public ListNode(int x)
        {
            val = x;
        }
    }
    public List<int> printListFromTailToHead(ListNode listNode)
    {
        List<int> list = new List<int>();
        while (listNode != null)
        {
            list.Insert(0, listNode.val);
            listNode = listNode.next;
        }
        return list;
    }
    

    一点补充

    针对C#语言,调用Insert方法的性能消耗会比Add方法多,但如果使用Add方法,最后需要再调用一次Reverse方法进行翻转。经过多次测试,这两种方式的性能消耗没有明显差距,和测试数据集相关。下面贴上第二种方法实现的代码。

    public List<int> printListFromTailToHeadOptimize(ListNode listNode)
    {
        List<int> list = new List<int>();
        while (listNode != null)
        {
            list.Add(listNode.val);
            listNode = listNode.next;
        }
        list.Reverse();
        return list;
    }

    更多题目的完整描述,AC代码,以及解题思路请参考这里https://github.com/iwiniwin/Algorithm
  • 相关阅读:
    ZeroMQ
    ps-lite源码解析
    RDMA
    MapReduce
    parameter server
    BytePS
    ELF程序头部及程序加载
    网络序与主机序
    CPU、CPU核与线程的关系
    chroot
  • 原文地址:https://www.cnblogs.com/iwiniwin/p/10793655.html
Copyright © 2011-2022 走看看