Simple Java solution with explaination
class Solution {\n    \n\tpublic ListNode[] splitListToParts(ListNode head, int k) {\n        ListNode[] res = new ListNode[k];\n        \n        int size = 0;
class Solution {\n    \n\tpublic ListNode[] splitListToParts(ListNode head, int k) {\n        ListNode[] res = new ListNode[k];\n        \n        int size = 0;\n        ListNode ptr = head;\n        \n        while(ptr != null){ // calc size of list\n            size++;\n            ptr = ptr.next;\n        }\n        \n        int extraNodes = size % k; //extra nodes in list\n        int nodeSize = size / k; //optimal size for each list\n\n        for(int i = 0 ; i < k && head != null ; i++){ // check both if k > 0 && head != null\n            res[i] = head;//store split list\n            ListNode prev = null; //keep track of last node for each split list\n            \n            int currNodeSize = nodeSize;\n            if(extraNodes-- > 0) //if extra nodes are present increase current node size by 1\n                currNodeSize += 1;\n\n            for(int j = 0 ; j < currNodeSize  ; j++){//move head to new list\n                prev = head;\n                head = head.next; \n            }\n            \n            prev.next = null;//make next of last node null\n        }\n        \n        return res;\n    }\n}
['Linked List', 'Java']