鍊錶 面試題0202 返回倒數第K個節點

2022-08-10 17:42:13 字數 766 閱讀 3539

題目:

實現一種演算法,找出單向鍊錶中倒數第 k 個節點。返回該節點的值。

注意:本題相對原題稍作改動

示例:輸入: 1->2->3->4->5 和 k = 2

輸出: 4

說明:給定的 k 保證是有效的。

方法:暴力解法和雙指標遊走

暴力解法:

這個思想就很簡單了,首先遍歷這條鍊錶,統計出這條鍊錶的總的節點個數num。根據num和k和判定出正序第num-k+1個節點位置;

**如下:

public

int kthtolast(listnode head, int

k)

int step=num-k; //

正序移動的步數

dummy=head;

while(step>0)

return

dummy.val;

}

複雜度分析:

時間複雜度:o(2m-k),也就是o(n)級時間複雜度;

空間複雜度:o(1);

雙指標遊走法:

演算法思路:首先用兩個指標指向head,讓其中乙個指標走k-1步,再兩個指標同時出發走直到快指標走到尾節點:

**如下:

class

solution

while(q.next!=null

)

return

p.val;

}}

面試題 02 02 返回倒數第 k 個節點

實現一種演算法,找出單向鍊錶中倒數第 k 個節點。返回該節點的值。注意 本題相對原題稍作改動 示例 輸入 1 2 3 4 5 和 k 2 輸出 4 運用雙指標思路,k為目標節點距離最後乙個節點的距離,所以先定義快指標移動k個距離,此時定義慢指標,兩個指標同時移動,當快指標移動到鍊錶末尾時結束,這是慢...

面試題02 02 返回倒數第k個節點

實現一種演算法,找出單向鍊錶中倒數第k個節點,返回該節點的值 示例 輸入 1 2 3 4 5 和 k 2 輸出 4分析 可以先遍歷一遍鍊錶,計算鍊錶的長度 然後根據正反向關係就可以得到節點 definition for singly linked list.struct listnode class...

面試題 02 02 返回倒數第 k 個節點

題目鏈結 實現一種演算法,找出單向鍊錶中倒數第 k 個節點。返回該節點的值。注意 本題相對原題稍作改動 示例 輸入 1 2 3 4 5 和 k 2 輸出 4 說明 給定的 k 保證是有效的。題目要求是返回倒數第k個節點,不要看錯了,其次是保證k是有效的,也就是說不會出現找不到的情況。假設有n個數,讓...