题目
题解
一般类似的题都是有快慢指针,l1,l2分别两个指针,然后对比,然后排序
有个细节就是一个header,我们需要用另一个ListNode去拿到值,保持header的值不会变。
代码
/**
* 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) {
ListNode node = new ListNode(-1);
ListNode node1 = node;
while(l1!=null&&l2!=null){
if(l1.val>l2.val){
node1.next = l2;
l2=l2.next;
}else{
node1.next = l1;
l1=l1.next;
}
node1 = node1.next;
}
//如果有l1或者l2为空的情况,证明还有剩余,可以把剩余的补齐
node1.next = l1 == null?l2:l1;
return node.next;
}
}