Java 链接列表采访奎斯顿

Java 链接列表采访奎斯顿,java,algorithm,debugging,linked-list,Java,Algorithm,Debugging,Linked List,因此,问题是: *给定一个具有头节点根的(单个)链表,编写一个函数将链表拆分为k个连续的链表“部分” 每个零件的长度应尽可能相等:任何两个零件的尺寸差异不得超过1。这可能会导致某些部分为空 零件应按输入列表中出现的顺序排列,较早出现的零件的尺寸应始终大于或等于较晚出现的零件 返回表示已形成的链表部分的ListNode列表* 我做了思考部分,得出ans[]的第一个索引应该有N%k+N/k个节点,ans数组的后续部分应该有N/k个节点,例如: [1,2,3,4,5,6,7,8,9,10]

因此,问题是:

*给定一个具有头节点根的(单个)链表,编写一个函数将链表拆分为k个连续的链表“部分”

每个零件的长度应尽可能相等:任何两个零件的尺寸差异不得超过1。这可能会导致某些部分为空

零件应按输入列表中出现的顺序排列,较早出现的零件的尺寸应始终大于或等于较晚出现的零件

返回表示已形成的链表部分的ListNode列表*

我做了思考部分,得出ans[]的第一个索引应该有N%k+N/k个节点,ans数组的后续部分应该有N/k个节点,例如:

     [1,2,3,4,5,6,7,8,9,10] k=3

     ans = [ [1,2,3,4] [5,6,7] [8,9,10] ]
您可以看到ans[0]的长度为N%k+N/k=10%3+10/3=1+3=4,其余的长度为N/k=3

但是我被我试图调试代码的实现卡住了,但我不确定它错在哪里

public ListNode[] splitListToParts(ListNode root, int k) {
    ListNode node = root;
    int N=0;
    while(node!=null){
        N++;
        node = node.next;
    }

    int intervalLen = N/k;
    int start = N%k;

    ListNode[] ans = new ListNode[k];
    ListNode temp = root;
    for(int z=0; z<start; z++){
        System.out.println(temp.val);
        temp = temp.next;
    }
    ans[0] = root;
    ListNode nextNode = temp;
    ListNode currNode = temp;
    ListNode hold = root;
    for(int i=0; i<k; i++){
        if(i==0){
            hold = root;
        }else{
            hold = nextNode;
        }
        for(int j=0; j<intervalLen-1;j++){
            System.out.println(temp.val);
            temp=temp.next;
        }
        nextNode = temp.next;//error here
        currNode = temp;
        currNode.next = null;
        temp = nextNode;
        ans[i] = hold;
    }

    return ans;
}

所以我猜4是指向null的,在下一个循环中,我们尝试执行nextNode=temp.next…nextNode=null.next,这会给出错误。。但我已经在代码中确定了下一个指针curr pointer以避免出现这种情况,但我仍然不确定为什么会出现错误。

我正在考虑类似的问题(解释为对代码的注释)

publicListNode[]拆分ListToParts(ListNodeRoot,int k){
ListNode=root;
int N=0;
while(节点!=null){
N++;
node=node.next;
}
int intervalLen=N/k;
int start=N%k;
ListNode[]ans=新ListNode[k];
ListNode curr=root;//curr=当前第一个元素

for(int i=0;isorry但是,4.next必须指向null,否?
  1, 2, 3, 4... error