### 解题思路
1.首先求出链表中一共有多少个元素n
2.然后通过n/k判断一共要分成几块
3.通过n%k判断多出来多少个节点,把他们分别分配到对应的块中去
### 代码
class Solution {
public:
vector<ListNode*> splitListToParts(ListNode* root, int k) {
int n = 0;
for(auto p=root;p;p=p->next) n++; //统计元素个数
int part = n / k;
int remainder = n % k;
vector<ListNode*> res(k,NULL);
ListNode* p = root;
if(n < k) k = n;
for(int i = 0; i < k; ++i){
int tempLen = remainder > 0 ? part+1:part; //根据余数的数量判断当前块要不要多开一个位置给多余的节点
ListNode* nhead = p;
for(int j = 0; j < tempLen-1; ++j) p = p->next;
auto c = p;
p = p->next;
c->next = NULL;
res[i] = nhead;
if(remainder) remainder--;
}
return res;
}
};