Java: 0 ms, faster than 100.00% (with comments)
```\npublic ListNode[] splitListToParts(ListNode root, int k) {\n        ListNode[] ln = new ListNode[k];\n        \n        if (root == null)\n            retu
```\npublic ListNode[] splitListToParts(ListNode root, int k) {\n        ListNode[] ln = new ListNode[k];\n        \n        if (root == null)\n            return ln;\n        \n        // Calculte the length of LinkedList\n        int l = 0;\n        ListNode n = root;\n        while (n != null) {\n            l++;\n            n = n.next;\n        }\n        \n        // Calculate length of part(pL)\n        // Calculate remainder(r) to know if list can not be divided in equal parts\n        int pL = l / k;\n        int r = l % k;        \n        int index = 0;\n        \n        // While root is not equal to null, iterate over the list\n        // Length of the LinkedList to be inserted in array will be pL + (1 or 0) depending upon the remainder. \n        n = root;\n        while (n != null) {\n            ListNode res  = n;\n            \n            // As, difference in length of parts should not be more than 1, we initialize j as 1 or 0 depending on remainder.\n\t\t\t// if remainder is 0, j = 0, else j = 1.\n\t\t\t// we iterate over the input till (pL + j) - 1, to get the last node of part.\n            int j = r <= 0 ? 0 : 1;\n            for (int i = 0; i < pL + j - 1; ++i) {                \n                n = n.next;\n            }            \n            \n            // set the next of last node to null, and iterate further with the next node of last node.\n            ListNode tmp = n.next;\n            n.next = null;\n            n = tmp;\n            \n            // add the res to array.\n            ln[index++] = res;\n            r--;\n        }\n        \n        return ln;\n    }
[]