找到單鏈表倒數第n個節點,保證鍊錶中節點的最少數量為n。
給出鍊錶 3->2->1->5->null和n = 2,返回倒數第二個節點的值1.
思路:計算單鏈表長度length,然後遍歷單鏈表找出第(length-n+1)個結點
耗時:54ms
listnode *nthtolast(listnode *head, int n)
while(1)
number++;
q = q->next;
}}
思路:將單鏈表反轉,找到正數第n個結點
耗時:61ms
listnode *nthtolast(listnode *head, int n)
count++;
r = r->next;}}
private:
listnode *reverse(listnode *head)
p->next = head;
head = head->next;
p->next->next = null;
return head;
}};
思路:定義兩個指標fast和slow,fast指標先移動到第n-1個結點,然後fast和slow指標同時向後移動。直到fast指標只想尾結點。此時,slow指標指向的位置即為倒數第n個節點;
耗時:81ms
listnode *nthtolast(listnode *head, int n)
while(fast->next != null)
return slow;
}
lintcode鍊錶倒數第n個節點
鍊錶倒數第n個節點 找到單鏈表倒數第n個節點,保證鍊錶中節點的最少數量為n。您在真實的面試中是否遇到過這個題?yes 樣例給出鍊錶3 2 1 5 null 和n 2,返回倒數第二個節點的值1.標籤 分析 本題方法是遍歷一遍算出有多少個節點,然後減去要求的倒數數字,再次遍歷。應該還可以採用下標的辦法,...
LintCode之鍊錶倒數第n個節點
題目描述 我的 1 2 definition for listnode.3 public class listnode 10 11 1213 14public class solution 25 listnode h new listnode 1 26 倒置單鏈表 27while head null...
LintCode 刪除鍊錶中倒數第n個節點
1.描述 給定乙個鍊錶,刪除鍊錶中倒數第n個節點,返回鍊錶的頭節點。樣例 給出鍊錶1 2 3 4 5 null和 n 2.刪除倒數第二個節點之後,這個鍊錶將變成1 2 3 5 null.2.分析 首先思路和查詢鍊錶中倒數第n個節點是相同的,只要找到了才能刪除它。倒數第n個節點根據鍊錶的長度轉換為正數...