### 解题思路

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;
    }
};