《劍指offer》面試題10 鍊錶中倒數第k個節點

2021-10-09 04:20:43 字數 767 閱讀 1616

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。

這個題目也延續了劍指offer題目當中資訊不給全的傳統,其中**當中的第乙個引數head表示鍊錶的表頭node,k表示的是乙個數字。我們只需要遍歷所有node,將這些node放進乙個棧當中即可(用列表來代替棧),然後找到棧當中的倒數第k個節點輸出即可。**如下:

# -*- 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

#這個k表示的是倒數第k,而不是正數第k

#k如果比鍊錶的長度還有大的話就返回none

if head==none or head.next==none:

return none

ls=i=0

while head:

head=head.next

length=len(ls)

zhengshu=length-k+1

if k>len(ls) or k<1:#這裡還需要考慮k<1的情況,實在是太坑人了

return none

else:

return ls[zhengshu-1]

得解也!

劍指offer 面試題10

題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中1的個數。例如把9表示成二進位制是1001,有兩位是1.因此如果輸入9,該函式輸出2。我們程式設計的時候需要注意關於負數的處理,忽略負數容易造成死迴圈。有兩種解法 第二種最好 第一種 include using namespace std i...

劍指offer 面試題16 反轉鍊錶

題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。hint 請務必使用鍊錶 輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 0 n 1000 代表將要輸入的鍊錶的個數。輸入的第二行包含n個整數t 0 t 1000000 代表鍊錶元素。輸出 對應每個...

劍指Offer面試題16 反轉鍊錶

反轉鍊錶 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出翻轉後鍊錶的頭結點。分析 假設h,i,j三個節點。h節點已經指向前面的節點,i節點要指向h節點,這時,i與j中間斷開,因此在將i節點指向 h節點之前,先記下j節點。因此調整時 需要知道當前節點以及當前節點前面乙個節點,以及當前節點後面乙個...