每天一道演算法題 鍊錶中倒數第k個結點

2021-08-11 14:30:34 字數 932 閱讀 6090

題目描述

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

測試用例:

1,對應輸出應該為:

分析:

1.

兩個指標,先讓第乙個指標和第二個指標都指向頭結點,然後再讓第乙個指正走(k-1)步,到達第k個節點。然後兩個指標同時往後移動,當第乙個結點到達末尾的時候,第二個結點所在位置就是倒數第k個節點了

listnode p, q;

p = q = head;

int i = 0;

for (; p != null; i++)

return i < k ? null : q;

2.一共有count個,倒數第k個就是正數第count-k+1,下標是count-k

原始碼:

class

listnode

}public

class

test1

if (k > count)

return

null;

system.out.println(count);

// 一共有count個,倒數第k個就是正數第count-k+1,下標是count-k

for (int i = 0; i < count - k; i++)

return head;

}}

執行測試:

總結:

兩種方法都各有千秋,第二種比較容易想出來,也更加容易理解。第一種優點就在於演算法設計巧妙。

每天乙個演算法之鍊表中倒數第K個結點

演算法思想 設定頭尾指標,尾指標先移動到底n個位置,然後頭尾一起移動,尾指標移動到最後時,頭指標的位置就是倒數第n個位置。class listnode public class reorderoddeven listnode list createlist n system.out.println ...

每天一道演算法題

no.1 棧是特殊的線性表,它。a.對 b.錯答案 錯,它的插入和刪除都是在同一端進行的。no.2 n個葉子節點的滿二叉樹 除了葉子節點,每個節點都有兩個孩子 總共有多少個節點?a.2n 1 b.2n c.n 1 d.n答案 a 滿二叉樹我們講過了,度為0的節點比度為2的加點多乙個。滿二叉樹是特殊的...

每天一道演算法題

1.給定乙個只包括 的字串,判斷字串是否匹配。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。思路 正確思路 不需要考慮輸入內容是否合法,這只是做題,不是工程 定義乙個字典,後括號為鍵,前半部分為值 定義乙個元素儲存棧頂,注意這個設定,取棧...