Lintcode 鍊錶倒數第n個節點

2021-08-06 02:50:43 字數 952 閱讀 7668

找到單鏈表倒數第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個節點根據鍊錶的長度轉換為正數...