劍指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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章