0 ms, easy to understand with comments JAVA
\nclass Solution {\n    public ListNode[] splitListToParts(ListNode head, int k) {\n        ListNode[] ans = new ListNode[k]; // ans array of listnodes of size 
```\nclass Solution {\n    public ListNode[] splitListToParts(ListNode head, int k) {\n        ListNode[] ans = new ListNode[k]; // ans array of listnodes of size k(number of splits)\n        ListNode ptr = head;\n        int count=0; // numbers of nodes in the list\n        for(count=0;ptr!=null;count++) ptr=ptr.next; // counting nodes\n        int atleast = count/k; // minimum number of nodes in single split\n        int extra = count%k; // extra node to add \n        ListNode dummey = new ListNode(-1); // counter node \n        dummey.next = head;\n        ptr = dummey;\n        int index=0; // index of ans array\n        if(k>count){ // if splits is greater than number of nodes, then every node will be added indivilually in ans array \n            while(head!=null){\n                ListNode pt = new ListNode(head.val);\n                ans[index++] = pt;\n                head=head.next;\n            }\n            return ans;\n        }\n        while(dummey.next!= null){\n            ListNode newhead = ptr.next; // every time we assing a new head \n            ListNode end = ptr.next; // pointing the last node of a split\n            for(int x=1;x<atleast && end.next != null;x++) end=end.next;\n            if(extra-->0){\n                end=end.next;\n            }\n            newhead = end.next; // assigning new head\n            if(end.next != null) end.next = null;\n            ans[index++]=ptr.next;\n            dummey.next = newhead; // spliting and adding in the ans array\n        }\n        return ans;\n    }\n}\n```
[]