該題目和以下兩個題的解題思路相似:
劍指 offer——18:刪除鍊錶的節點
leetcode19:刪除鍊錶的倒數第n個節點
目錄
一、題目
二、示例
三、思想
四、**
輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾節點是倒數第1個節點。例如,乙個鍊錶有6個節點,從頭節點開始,它們的值依次是1、2、3、4、5、6。這個鍊錶的倒數第3個節點是值為4的節點。
示例:雙指標思想,p,q兩指標。給定乙個鍊錶:1->2->3->4->5, 和 k= 2.返回鍊錶 4->5.
p指標是快指標,q指標是慢指標。
使兩指標的距離為n,那麼,當快指標p遍歷到鍊錶結尾時,慢指標q的下乙個節點為倒數第n個節點,刪除該節點即可。
# definition for singly-linked list.
class listnode:
def __init__(self, x):
self.val = x
self.next = none
class solution:
def getkthfromend(self, head: listnode, k: int):
p = head
q = head
for i in range(k):
if p.next:
p = p.next
else:
return head
while p.next:
p = p.next
q = q.next
return q
if __name__ == '__main__':
head = listnode(1)
head.next = listnode(2)
head.next.next = listnode(3)
head.next.next.next = listnode(4)
head.next.next.next.next = listnode(5)
n = 2
s = solution()
new_head = s.getkthfromend(head, n)
print(new_head)
劍指offer 22 鍊錶中倒數第K個結點
這道題的題目可以描述為 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。typedef int datatype typedef struct listnode listnode 初始化 void listinit listnode ppfirst 這道題的普通解題思路分為三步 1.定義兩個指標forwa...
劍指offer 22 鍊錶中倒數第k個節點
輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾節點是倒數第1個節點。例如,乙個鍊錶有6個節點,從頭節點開始,它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個節點是值為4的節點。示例 給定乙個鍊錶 1 2 3 4 5,和 k 2.返回鍊錶 4 ...
劍指 Offer 22 鍊錶中倒數第k個節點
劍指 offer 22.鍊錶中倒數第k個節點 難度 簡單 輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾節點是倒數第1個節點。例如,乙個鍊錶有6個節點,從頭節點開始,它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個節點是值為4的節點。示例 給...