剑指 Offer 25. 合并两个排序的链表
题目描述
思路
归并的思想。
- 用两个指针分别指向两条链表的头节点。
- 比较两个指针指向的值的大小。
- 取较小的节点放到新的链表上,并将对应的指针后移一位。
重复上述动作,直到较短的链表被取完,然后将长的链表的剩下的部分给衔接到新的链表上。并返回结果
代码
/**
 * 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 fakeHead=new ListNode(),p=fakeHead;
        while(l1!=null&l2!=null){
            if(l1.val<=l2.val){
                p.next=l1;
                p=p.next;
                l1=l1.next;
            }else{
                p.next=l2;
                p=p.next;
                l2=l2.next;
            }
        }
        if(l1==null){
            p.next=l2;
        }
        if(l2==null){
            p.next=l1;
        }
        return fakeHead.next;
    }
}

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号