輸出連結串列倒數第k個結點
阿新 • • 發佈:2018-12-13
問題描述:
輸入一個連結串列,輸出該連結串列中倒數第k個結點。
解題思想:
若連結串列為空或者k為0,則返回的是None。
當連結串列不為空時,有兩種情況:
連結串列長度n<k時,不存在倒數第k個結點,則返回None。
連結串列長度n>k時,設定一個長度為k的list,不斷地將連結串列新輸入的結點儲存進來,若數量超過了k,則把最早進來的丟擲,直到最後一個結點,此時list儲存的是最後k個結點,輸出list中的第一個即可。
# coding:utf-8 class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: def FindKthToTail(self, head, k): # write code here if head==None or k==0: return None temp=[] d=0 while head!=None: if len(temp)==k: temp.pop(0) temp.append(head) head=head.next d+=1 if d<k: return None else: return temp[0] if __name__=="__main__":#輸入一個連結串列,輸出該連結串列中倒數第k個結點。 a=Solution() head=ListNode(0) k=head for i in range(1,10): k.next = ListNode(i) k=k.next k=head while k!=None: print k.val k=k.next print a.FindKthToTail(head,5)