摘要:題目描述輸入一個鏈表,按鏈表值從尾到頭的順序返回一個。最后別忘了,從尾到頭遍歷鏈表,不要忘了將你的結果進行翻轉。
題目描述
輸入一個鏈表,按鏈表值從尾到頭的順序返回一個ArrayList。
分析要了解鏈表的數據結構:
val屬性存儲當前的值,next屬性存儲下一個節點的引用。
要遍歷鏈表就是不斷找到當前節點的next節點,當next節點是null時,說明是最后一個節點,停止遍歷。
最后別忘了,從尾到頭遍歷鏈表,不要忘了將你的結果進行翻轉。
代碼/*function ListNode(x){ this.val = x; this.next = null; }*/ function printListFromTailToHead(head) { const result = []; let temp = head; while(temp){ result.push(temp.val); temp = temp.next; } return result.reverse(); }拓展
鏈表定義:用一組任意存儲的單元來存儲線性表的數據元素。
一個對象存儲著本身的值和下一個元素的地址。
需要遍歷才能查詢到元素,查詢慢。
插入元素只需斷開連接重新賦值,插入快。
function LinkList(){ function node(element){ this.value = element; this.next = null; } let length = 0; let head = null; } LinkList.prototype = { // 追加 append:function(element){ var node = new node(element); var temp = this.head; if(this.head){ //遍歷找到鏈表的終點 while(temp.next){ temp = temp.next; } temp.next = node; }else{ this.head = node; } this.length++; }, // 插入 insert:function(element,index){ if(index <= this.length && index>0){ var node = new node(element); var currentIndex = 0; var currentNode = this.head; var preNode = null; if (currentIndex === 0) { node.next = currentNode; this.head = node; return; } while(currentIndex鏈表翻轉 把初始鏈表頭當做基準點
移動下一個元素到頭部
直到下一個元素為空
/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} head * @return {ListNode} */ var reverseList = function (head) { let currentNode = null; let headNode = head; while (head && head.next) { // 將當前節點從鏈表中取出 currentNode = head.next; head.next = currentNode.next; // 將取出的節點移動到頭部 currentNode.next = headNode; headNode = currentNode; } return headNode; };
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100877.html
摘要:導航小助手劍指從尾到頭打印鏈表題目詳情解題思路源代碼總結劍指從尾到頭打印鏈表題目詳情輸入一個鏈表的頭節點,從尾到頭反過來返回每個節點的值用數組返回。時間復雜度方法先反轉鏈表并求長度,在將反轉后的鏈表數據拷貝至數組中。 ...
摘要:題目輸入一個鏈表的頭節點,從尾到頭反過來返回每個節點的值用數組返回。 題目輸入一個鏈表的頭節點,從尾到頭反過來返回每個節點的值(用數組返回)。示例 1:輸入:head = [1,3,2]輸出:[2,3,1]限制:0
題目 輸入一個鏈表的頭節點,從尾到頭反過來打印出每個節點的值。 解題思路 一、棧 第一個遍歷的節點最后一個輸出,而最后一個比遍歷到的節點第一個輸出(后進先) public static ArrayList printListFromTailToHead(ListNode listNode){ ArrayList list = new ArrayList(); ...
摘要:面試題從尾到頭打印鏈表輸入一個鏈表,從尾到頭打印鏈表每個節點的值面試題重建二叉樹輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹并返回。隊列中的元素為類型。其中負數用補碼表示。 面試題2 單例(之前有整理,略) 面試題3 二維數組中的查找 public boolean find(int target, int [][] arra...
摘要:一定要認真看分析注釋題目要求題目描述輸入一個鏈表,從尾到頭打印鏈表每個節點的值。分析因為鏈表只有知道當前結點才能知道下一結點,所以不可能直接從后往前打印。 一定要認真看 分析 | 注釋 | 題目要求 Question 1 題目描述:輸入一個鏈表,從尾到頭打印鏈表每個節點的值。 分析:因為鏈表只有知道當前結點才能知道下一結點,所以不可能直接從后往前打印。這種逆序的算法(策略)我們常用棧這...
閱讀 3835·2021-11-24 09:39
閱讀 3753·2021-11-22 12:07
閱讀 1105·2021-11-04 16:10
閱讀 798·2021-09-07 09:59
閱讀 1902·2019-08-30 15:55
閱讀 935·2019-08-30 15:54
閱讀 724·2019-08-29 14:06
閱讀 2475·2019-08-27 10:54