【LeetCode】Merge Two Sorted Lists

来源:互联网 发布:获取端口号 编辑:程序博客网 时间:2024/05/29 07:18

题目

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

解答

注意假的头结点的运用,代码如下:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null; *     } * } */public class Solution {    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {        if(l1==null){            return l2;        }        if(l2==null){            return l1;        }        ListNode mergeHead=null;        if(l1.val<l2.val){            mergeHead=l1;            l1=l1.next;         //   mergeHead.next=null;  //可要可不要,之后节点会更新        }else{            mergeHead=l2;            l2=l2.next;          //  mergeHead.next=null;        }        ListNode cur=mergeHead;        while(l1!=null&&l2!=null){            if(l1.val<l2.val){                cur.next=l1;                l1=l1.next;                cur=cur.next;             //   cur.next=null;            }else{                cur.next=l2;                l2=l2.next;                cur=cur.next;             //   cur.next=null;            }        }        if(l1!=null){            cur.next=l1;        }else if(l2!=null){            cur.next=l2;        }        return mergeHead;    }}//利用假的头结点的简化版public class Solution{public ListNode mergeTwoLists(ListNode l1,ListNode l2){ListNode p1=l1;ListNode p2=l2;ListNode fakeHead=new ListNode(-1);  //引入一个假的头结点ListNode p=fakeHead;while(p1!=null&&p2!=null){if(p1.val<p2.val){p.next=p1;p1=p1.next;}else{p.next=p2;p2=p2.next;}p=p.next;}if(p1!=null){p.next=p1;}if(p2!=null){p.next=p2;}return fakeHead.next;}}

---EOF---


0 0
原创粉丝点击