LeetCode第五題
9417 ワード
2つの順序付きチェーンテーブルを結合
タイトルの説明:
2つの昇順チェーンテーブルを新しい昇順チェーンテーブルに結合して返します.新しいチェーンテーブルは、指定された2つのチェーンテーブルのすべてのノードを接合することによって構成されます.
例:
入力:1->2->4、1->3->4出力:1->1->2->3->4->4分析:2つのチェーンテーブルは秩序チェーンテーブルであるため、2つのチェーンテーブルを同時に遍歴することができ、2つのチェーンテーブルの要素値を比較し、チェーンテーブル1の値が現在のチェーンテーブル2の値より小さい場合は、チェーンテーブル1を1つの要素後ろに移動し、チェーンテーブル2を動かさず、再び比較する.チェーンテーブル2の値がチェーンテーブル1より小さい場合は、チェーンテーブル2の現在のノードをチェーンテーブル1に挿入し、チェーンテーブル2の要素ポインタを1つ後ろに移動します.逆もまた然り.
具体的なコードは以下の通りです.
JAVAではチェーンテーブルクラスListNodeクラスは存在しないため,チェーンテーブルListNodeクラスのカプセル化を独自に実現する必要がある.コードは次のとおりです.
ここにチップを挿入
チェーンテーブルクラスをカプセル化した後、チェーンテーブルを作成してチェーンテーブルのマージを完了することができます.今回の解題では、再帰的に使用します.具体的なコードは以下の通りです.
タイトルの説明:
2つの昇順チェーンテーブルを新しい昇順チェーンテーブルに結合して返します.新しいチェーンテーブルは、指定された2つのチェーンテーブルのすべてのノードを接合することによって構成されます.
例:
入力:1->2->4、1->3->4出力:1->1->2->3->4->4分析:2つのチェーンテーブルは秩序チェーンテーブルであるため、2つのチェーンテーブルを同時に遍歴することができ、2つのチェーンテーブルの要素値を比較し、チェーンテーブル1の値が現在のチェーンテーブル2の値より小さい場合は、チェーンテーブル1を1つの要素後ろに移動し、チェーンテーブル2を動かさず、再び比較する.チェーンテーブル2の値がチェーンテーブル1より小さい場合は、チェーンテーブル2の現在のノードをチェーンテーブル1に挿入し、チェーンテーブル2の要素ポインタを1つ後ろに移動します.逆もまた然り.
具体的なコードは以下の通りです.
JAVAではチェーンテーブルクラスListNodeクラスは存在しないため,チェーンテーブルListNodeクラスのカプセル化を独自に実現する必要がある.コードは次のとおりです.
ここにチップを挿入
class ListNode {
int val;
ListNode next;
public ListNode(int x){
this.val=x;
next=null;
}
}
チェーンテーブルクラスをカプセル化した後、チェーンテーブルを作成してチェーンテーブルのマージを完了することができます.今回の解題では、再帰的に使用します.具体的なコードは以下の通りです.
public class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null){
return l2;
}
if(l2==null){
return l1;
}
if(l1.val<l2.val){
l1.next=mergeTwoLists(l1.next, l2);
return l1;
}else{
l2.next=mergeTwoLists(l1, l2.next);
return l2;
}
}
public static void main(String[] args) {
ListNode l1=new ListNode(1);// l1
ListNode l1Head=l1; // l1
ListNode l2=new ListNode(1); // l2
ListNode l2Head=l2; // l2
for(int i=0;i<5;i++){ // 5 l1
ListNode temp=new ListNode(i+3);
l1.next=temp;
l1=l1.next;
}
for(int i=3;i<8;i++){// 5 l2
ListNode temp=new ListNode(i+1);
l2.next=temp;
l2=l2.next;
}
Solution su=new Solution();
ListNode l3=su.mergeTwoLists(l1Head, l2Head);
ListNode l3Head=l3; // l3
while(l3!=null){//
System.out.println(l3.val);
l3=l3.next;
}
}
}