鍊錶倒數第n個節點

2022-04-08 04:06:06 字數 962 閱讀 9461

題目描述:找到單鏈表倒數第n個節點,保證鍊錶中節點的最少數量為n。

樣例:給出鍊錶 3->2->1->5->null和n = 2,返回倒數第二個節點的值1.

因為鍊錶是不能回溯的,同時也不像陣列那樣,每個元素都存有乙個自然的索引,可以實現快速查詢,所以,我們在這裡,通過兩個指標來解決這個問題。

想一想之前在「排序鍊錶轉換為二分查詢樹」中,我們求取鍊錶中間節點值的方法,是通過快慢指標,快指標為慢指標速率兩倍,通過一次遍歷,查到中間節點的。這裡,可以借助這種思路,但是稍微改變一下就行:令快指標先走n步,然後慢指標出發,快慢指標保持速率一致(其實嚴格說不能叫「快慢」了,叫「先後」更為合理),直到快指標為空,慢指標的位置正好是倒數第n個節點。

給出**:

"""definition of listnode

class listnode(object):

def __init__(self, val, next=none):

self.val = val

self.next = next

"""class solution:

"""@param head: the first node of linked list.

@param n: an integer.

@return: nth to last node of a singly linked list.

"""def nthtolast(self, head, n):

slow, fast = head, head

for i in range(n):

fast = fast.next

while fast:

slow = slow.next

fast = fast.next

return slow

# write your code here很簡單的兩指標應用,其實要學會舉一反三,通過查詢中間節點的方法,啟發得到本題的解法。

鍊錶倒數第n個節點

題目 鍊錶倒數第n個節點 問題描述 找到單鏈表倒數第n個節點,保證鍊錶中節點的最少數量為n。如 給出鍊錶 3 2 1 5 null 和n 2,返回倒數第二個節點的值1.思路 遍歷整個鍊錶,計數鍊錶元素的個數。第二遍遍歷鍊錶,到倒數第n個節點處停止,輸出第n個節點。class solution int...

鍊錶倒數第n個節點

問題描述 找到單鏈表倒數第n個節點,保證鍊錶中節點的最少數量為n。樣例 給出鍊錶 3 2 1 5 null和n 2,返回倒數第二個節點的值1.解題思路 建立新煉表來建立兩個指標dummy和head,用head遍歷鍊錶得出鍊錶的長度。用dummy進行for迴圈,遍歷到第sum 1個節點,就得到倒數第n...

鍊錶倒數第n個節點

1.問題描述 找到單鏈表倒數第n個節點,保證鍊錶中節點的最少數量為n。樣例給出鍊錶3 2 1 5 null 和n 2,返回倒數第二個節點的值1.2.解題思路 建立兩個指標,先讓第乙個指標移動n個節點,然後兩個指標一起移動,當第乙個節點移動到最後乙個節點時,第二個指著指的就是倒數第n個節點,然後返回這...