2017-07-28 9 views
1

私はコードに間違ったものは見つけられませんが、実行時エラーを出している2つのテストケースを提出するとエラーになります。そのエラーを理解するのを手伝ってください。私は少なくとも30カスタムテストケースのためにそれをチェックしたが、それはそれらのすべてのための適切な出力を提供します。2つのソートされたリンクリストを再帰的にマージしますか?

Code

public static Node mergeTwoList(Node head1, Node head2) { 
    Node c = null;   
    if (head1 == null) { 
     return head2; 
    } else if (head2 == null) { 
     return head1; 
    } 

    if (head1.data < head2.data) { 
     c = head1; 
     c.next = mergeTwoList(head1.next, head2); 
    } else { 
     c = head2; 
     c.next = mergeTwoList(head1, head2.next); 
    } 
    return c; 
} 

誰かが教えて行ってください何かを把握した場合。

+0

エラーは何ですか? –

+0

オンラインツールは具体的な詳細を提供しませんでした。それはちょうどランタイムエラーを表示しました –

+0

@ KillerDeathは再帰のためにスタックオーバーフローかもしれません。何かを見つけますか? –

答えて

1

あなたが再帰を使用し、再帰がスタックを生成するため、理由がstackoverflowだと思うし、リンクリストが長い場合は、stackoverflowが発生する可能性があります。

リコードに似た質問があり、それを反復で解決します。 私のブログに解説を貼り付けていますが、説明はMadarinにありますが、コードは依然として参考になります。リンクは次のとおりです。 http://codecrazer.blogspot.tw/2017/07/leetcode-21-merge-two-sorted-lists.html

関連する問題