1class Solution {2public ListNode[] splitListToParts(ListNode head, int k) {3ListNode[] arr = new ListNode[k];45if (k < 2 || head == null || head.next == null) {6arr[0] = head;7return arr;8}910ListNode temp = head;11int len = 1;12while (temp.next != null) {13len++;14temp = temp.next;15}1617int partition = len / k; // no of part 318int extra = len % k; // extra node 1 01920ListNode curr = head;21ListNode prev = null;22int index = 0;23while (head != null) {24arr[index++] = curr;25for (int i = 0; i < partition && curr != null; i++) {26prev = curr;27curr = curr.next;28}29if (extra > 0) {30prev = curr;31curr = curr.next;32extra--;33}34head = curr;35prev.next = null;36}37return arr;38}39}