func splitListToParts(root ListNode, k int) []ListNode {
cur := root
rootLen := 0 // 刚开始为0
for cur != nil {
cur = cur.Next
rootLen++
// 统计长度
}
arrayLen := make([]int, k)
// 每一个的单个长度
for i := k - 1; i >= 0; i-- {
if i + 1 <= rootLen % k {
arrayLen[i] = rootLen / k + 1
} else {
arrayLen[i] = rootLen / k
}
}
// 得到每一个的总长度
for i := 1; i < len(arrayLen); i++ {
arrayLen[i] += arrayLen[i - 1]
}
fmt.Println(arrayLen)
res := make([]*ListNode, k)
// init为nil
cur = root
rootLen = 0
i := 0
var last *ListNode
res[0] = cur // init
for cur != nil {
// rootLen 要小一位
if rootLen <= arrayLen[i] {
fmt.Println(i, rootLen)
if rootLen == arrayLen[i] {
res[i + 1] = cur // 这时候是对i + 1进行得到
if last != nil {
last.Next = nil // 切断
}
i++
}
}
last = cur
cur = cur.Next
rootLen++
}
return res
}