牛客網刷題 鍊錶中的節點每k個一組翻轉

2021-10-17 15:41:10 字數 1014 閱讀 7775

將給出的鍊錶中的節點每 k 個一組翻轉,返回翻轉後的鍊錶

如果鍊錶中的節點數不是 k 的倍數,將最後剩下的節點保持原樣

你不能更改節點中的值,只能更改節點本身。

要求空間複雜度 o(1)

例如:給定的鍊錶是1→2→3→4→5

對於 k=2, 你應該返回 2→1→4→3→5

對於 k=3, 你應該返回 3→2→1→4→5

輸入描述:

輸入乙個鍊錶和指定的k值

輸出描述:

翻轉後的鍊錶

輸入

1→2→3→4→5,2

輸出

2→1→4→3→5

通過計算長度可以知道需要交換幾輪,每一輪採用頭插法的思路依次交換節點。

通過計算長度以及採用頭插法的方式實現翻轉

// 思路1

public

class

solution

//構造乙個新的頭節點,方便返回值時找到反轉後鍊錶的頭節點。

listnode dummy =

newlistnode(0

);dummy.next = head;

listnode pre = dummy, cur = head, tmp = null;

int len =0;

while

(head != null)

// 這裡也是採用頭插法的方式

for(

int i =

0; i < len / k; i++

) pre = cur;

cur = cur.next;

}return dummy.next;

}}

小夥伴如果想測試的話,可以直接到牛客網這個鏈結做測試

鍊錶中的節點每k個一組翻轉-牛客網

牛客網刷題 鍊錶中環的入口節點

對於乙個給定的鍊錶,返回環的入口節點,如果沒有環,返回null 拓展 你能給出不利用額外空間的解法麼?輸入描述 輸入乙個鍊錶 輸出描述 輸出環的入口節點 輸入 輸出 hash表 使用額外的空間 通過遍歷記錄到hash表的方式找到環形鍊錶的入口 時間負責度 o n 空間負責度 o n 快慢指標 不使用...

牛客網刷題 重排鍊錶

將給定的單鏈表 l l0 l1 l ln 重新排序為 l0 ln l1 l l2 l l 要求使用原地演算法,不能改變節點內部的值,需要對實際的節點進行交換。輸入 輸出 線性表 因為鍊錶沒有下表,我們可以現將鍊錶遍歷一遍,儲存到線性表中,然後再重排序 鍊錶中點 鍊錶逆序 合併鍊錶 先查詢鍊錶的中點,...

牛客網 鍊錶中倒數第k個節點

題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。第一種方法 思路 1 新建乙個指標,用於遍歷鍊錶中所有的節點,統計節點的個數count。2 新建乙個指標,用於統計當前指標指示節點中的第幾個元素sum。3 判斷當前指標指示的節點是不是倒數第k個 count sum 1。4 注意不要忘記判斷鍊錶為空的情...