題目.
有意思可以拆解為3個子問題
另外變數和邏輯比較多容易搞混,最好多定義幾個臨時變數
package main
import
("fmt"
)type listnode struct
func
printlist
(root *listnode)
} fmt.
println
("....")}
func
reverse
(head *listnode)
*listnode
newl := head
head = head.next
newl.next =
nilfor head !=
nilreturn newl
}func
reversekgroup
(head *listnode, k int
)*listnode
var newh, newt *listnode
for head !=
nilreturn head
}} tmp := tail.next
tail.next =
nil segh, segt := tail, head
reverse
(head)
head = tmp
if newt ==
nilelse
}return newh
}func
main()
,},}
,},}
//printlist(reverse(l))
//printlist(reversekgroup(l, 2))
printlist
(reversekgroup
(l,30))
}
o(n)
o(1)
執行用時 :4 ms, 在所有 go 提交中擊敗了98.63%的使用者
記憶體消耗 :3.6 mb, 在所有 go 提交中擊敗了100.00%的使用者
25 k個一組翻轉鍊錶
給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 2 1 4 ...
25 K 個一組翻轉鍊錶
給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。示例 給你這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 2 1...
25 K 個一組翻轉鍊錶
給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。按部就班地模擬翻轉過程 definition for singly linked list.public class li...