アイデア:
新しいリンクリストを作成し、渡された2つのリンクリストの最初のノードを比較して、小さい方の値を新しいリンクリストに転送します。
重要なのは、新しいリンクリストを宣言するときに2つのポインターを作成することです。1つは指で、もう1つはプロセスによる変更です。
また、渡された2つのリンクリストのそれぞれのプロセスに応じて変化するポインタを作成します
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null||l2==null){
return l1==null?l2:l1;
}
ListNode head=new ListNode(0);
ListNode tail=head;
ListNode res1=l1;
ListNode res2=l2;
while(res1!=null&&res2!=null){
if(res1.val<res2.val){
tail.next=res1;
res1=res1.next;
}
else{
tail.next=res2;
res2=res2.next;
}
tail=tail.next;
}
if(res1==null){
tail.next=res2;
}
if(res2==null){
tail.next=res1;
}
return head.next;
}
}
壊す:
if(res1==null){
tail.next=res2;
}
if(res2==null){
tail.next=res1;
}
1)上記のコードは、3値式を単純化したものです。
tail.next=res1==null?res2:res1;
2)新しいリンクリストの2つのポインター:headとtail
l1とl2のポインタ:res1とres2