T725分隔鍊錶

2021-10-24 06:49:19 字數 583 閱讀 3073

思想

既然想要將原鍊錶盡可能的均分為k段,那麼可以先求出整個鍊錶的長度,然後,如果當前鍊錶的剩餘長度能夠整除k,那麼每次從原煉表中取(total / k) 個組成一段,如果不能整除,那麼每次從每次從原煉表中取(total / k + 1) 個組成一段(因為題目要求前面的段的長度要》=後面的段的長度,且各段的長度差不能超過1);然後令k–表示再把剩下的鍊錶均分為k段即可。

最終,如果分割出的段數小於給定值,那麼用null進行替代即可

時間複雜度o(n) ,空間複雜度o(n)

class solution 

temp = root;

while(temp!=null)

listnode next = temp.next;

temp.next = null;

res.add(start);

temp = next;

}while(res.size()return res.toarray(new listnode[0]);

}}

725 分隔鍊錶

1.求出鍊錶的長度len 2.len k求出平均每段鍊錶的長度,len k求出多出平均長度的個數 3.把每段鍊錶的頭指標存入結果陣列 definition for singly linked list.struct listnode class solution int mod len k int ...

725 分隔鍊錶

給定乙個頭結點為 root 的鍊錶,編寫乙個函式以將鍊錶分隔為 k 個連續的部分。每部分的長度應該盡可能的相等 任意兩部分的長度差距不能超過 1,也就是說可能有些部分為 null。這k個部分應該按照在鍊錶 現的順序進行輸出,並且排在前面的部分的長度應該大於或等於後面的長度。返回乙個符合上述規則的鍊錶...

LeetCode 725 分隔鍊錶

給定乙個頭結點為 root 的鍊錶,編寫乙個函式以將鍊錶分隔為 k 個連續的部分。每部分的長度應該盡可能的相等 任意兩部分的長度差距不能超過 1,也就是說可能有些部分為 null。這k個部分應該按照在鍊錶中出現的順序進行輸出,並且排在前面的部分的長度應該大於或等於後面的長度。返回乙個符合上述規則的鍊...