題目描述
輸入一個連結清單,輸出該連結清單中倒數第k個結點。
舉一個簡單的例子,比如連結清單{1,2,3,4,5},如果要傳回倒數第二個節點,也就是k=2,就相當于正數第5-k+1=4個節點,是以我們可以采用兩次循環:一次循環得到連結清單的結點個數;另一次循環則是從連結清單中找到第n-k+1個節點。雖然是兩次循環,但時間複雜度是o(n),需要注意的是,這裡仍然需要對連結清單的邊界條件進行判斷。基于這種思路寫出如下代碼:
還有一種思路就是建立兩個指針,一個指針先走k-1部,當第k部的時候,另一個指針從第一個節點開始走,這樣,第一個指針到達最後一個指針的時候,第二個指針剛好到達倒數第k個節點的位置。實作代碼如下(已被牛客ac):