力扣刷题
题目
21.合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
java解答
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null) return l2;
if(l2==null) return l1;
if(l1==null&&l2==null) return null;
ListNode l3=new ListNode(0);
ListNode p=l1,q=l2,zyx=l3;
while(p!=null&&q!=null){
if(p.val<=q.val){
zyx.next=new ListNode(p.val);
zyx=zyx.next;
p=p.next;
}
else{
zyx.next=new ListNode(q.val);
zyx=zyx.next;
q=q.next;
}
}
while(p!=null){
zyx.next=new ListNode(p.val);
zyx=zyx.next;
p=p.next;
}
while(q!=null){
zyx.next=new ListNode(q.val);
zyx=zyx.next;
q=q.next;
}
return l3.next;
}
}
2.更规范:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null) return l2;
if(l2==null) return l1;
if(l1==null&&l2==null) return null;
ListNode l3=new ListNode(0);
ListNode p=l1,q=l2,zyx=l3;
while(p!=null&&q!=null){
if(p.val<=q.val){
zyx.next=new ListNode(p.val);
zyx=zyx.next;
p=p.next;
}
else{
zyx.next=new ListNode(q.val);
zyx=zyx.next;
q=q.next;
}
}
if(p!=null){
zyx.next=p;
}
if(q!=null){
zyx.next=q;
}
return l3.next;
}
}