
解题思路
//ListNode list=new ListNode(0) 初始化一个节点值为0的空节点,最常用最正规写法,new ListNode()默认为0(这其实不就是构造函数吗).相当于初始化一个空节点,=null仅仅声明,没有初始化,啥也没干
基本思路:
1:l1,l2链表都不为空,比较后不断移动
2:l1为空,l2不为空,将l2剩余值利用while循环加入到链表
3:同2
小细节
ListNode dum = new ListNode();//初始化一个节点,值默认为0
ListNode cur=dum;//为什么要这样呢?可以理解为dum和cur都是指针,指向一个节点(也可以理解为节点的等于代表两个节点的等价)。cur一会会指向合并后的链表,因为cur会不断的移动,但dum不会移动,dum其实就是代表合并后的链表,但一定注意返回的是dum.next,因为不能包括dum本身,本身是0
代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode dum = new ListNode();
ListNode cur=dum;
while(l1!=null&&l2!=null){
if(l1.val<l2.val) {
cur.next=l1;
l1=l1.next;
}else {
cur.next=l2;
l2=l2.next;
}
cur=cur.next;
}
while(l1!=null&&l2==null){
cur.next=l1;
l1=l1.next;
cur=cur.next;
}
while(l2!=null&&l1==null){
cur.next=l2;
l2=l2.next;
cur=cur.next;
}
return dum.next;
}
}
网友评论