題目描述:找到單鏈表倒數第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個節點,然後返回這...