思想:
既然想要將原鍊錶盡可能的均分為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個部分應該按照在鍊錶中出現的順序進行輸出,並且排在前面的部分的長度應該大於或等於後面的長度。返回乙個符合上述規則的鍊...