BEST_APPROACH (Easy to Understand)
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```cpp []\nclass Solution {\npublic:\n    vector<ListNode*> splitListToParts(ListNode* head, int k) {\n        ListNode* temp = head;\n        int n = 0;\n        while (temp != NULL) {\n            n++;\n            temp = temp->next;\n        }\n        int size = n / k; // required size of each part\n        int rem = n % k;  // left out remainder to be adjusted \n        vector<ListNode*> res(k,NULL);\n        ListNode* current = head;\n        \n        for (int i = 0; i < k; i++) {\n            if (current == NULL) break; \n            res[i] = current;\n            int part_size = size;\n            if (rem > 0) {\n                part_size++; \n                rem--;\n            }\n            for (int j = 1; j < part_size; j++) {\n                current = current->next;\n            }\n            ListNode* next = current->next;\n            current->next = NULL;\n            current = next;\n        }\n        return res;\n    }\n};\n\n```
['C++']