Re: [闲聊] 每日leetcode

楼主: JIWP (JIWP)   2024-09-08 22:19:34
725. Split Linked List in Parts
给一个linked list,和一个整数k
请将这个linked list分成k个linked list
并且用一个矩阵记录每一个linked list的head
每个linked list的长度不能相差超过1
且较长的要放前面
思路 :
用一个矩阵纪录每一个node
接着就开始分成k等分
满简单的
golang code :
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func splitListToParts(head *ListNode, k int) []*ListNode {
rec := make([]*ListNode, 0)
for head != nil {
rec = append(rec, head)
head = head.Next
}
n := len(rec)
res := make([]*ListNode, k)
if k > n {
for i := 0; i < n; i++ {
res[i] = rec[i]
rec[i].Next = nil
}
return res
}
idx, remainder, num := 0, n%k, n/k
for i := 0; i < k; i++ {
res[i] = rec[idx]
if remainder > 0 {
idx += num + 1
rec[idx-1].Next = nil
remainder
作者: sustainer123 (caster)   2023-09-08 22:19:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com