nikunjsoni

725

Mar 21st, 2021
68
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Definition for singly-linked list.
  3.  * struct ListNode {
  4.  *     int val;
  5.  *     ListNode *next;
  6.  *     ListNode() : val(0), next(nullptr) {}
  7.  *     ListNode(int x) : val(x), next(nullptr) {}
  8.  *     ListNode(int x, ListNode *next) : val(x), next(next) {}
  9.  * };
  10.  */
  11. class Solution {
  12. public:
  13.     vector<ListNode*> splitListToParts(ListNode* root, int k) {
  14.         ListNode *node, *prev;
  15.         int len, n, r;
  16.        
  17.         len = 0;
  18.         node = root;
  19.         while(node){
  20.             len++;
  21.             node = node->next;
  22.         }
  23.        
  24.         n = len/k; r = len%k;
  25.         vector<ListNode*> parts(k, NULL);
  26.         node = root;
  27.        
  28.         for(int i=0; i<k && node; i++,r--){
  29.             parts[i] = node;
  30.             for(int j=0; j<n+(r>0); j++){
  31.                 prev = node;
  32.                 node = node->next;
  33.             }
  34.             prev->next = NULL;
  35.         }
  36.         return parts;
  37.     }
  38. };
RAW Paste Data