Q12--合并两个排序的链表

来源:互联网 发布:淘宝 第一套人民币 编辑:程序博客网 时间:2024/06/07 07:20

一、题目描述

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是按照递增排序的。

二、解题思路

1、要有边界判断,判断链表为空的情况
2、可以采用递归的思路

三、Java代码实现

/*public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*///递归做法public class Solution {    public ListNode Merge(ListNode list1,ListNode list2) {       if(list1 == null) return list2;       if(list2 == null) return list1;             ListNode head = null;             if(list1.val < list2.val){                 head = list1;                 head.next = Merge(list1.next, list2);             }             else             {                 head = list2;                 head.next = Merge(list1, list2.next);             }             return head;      }}//非递归做法public class Solution {    public ListNode Merge(ListNode list1,ListNode list2) {        if(list1 == null)            return list2;        if(list2 == null)            return list1;        ListNode head;        if(list1.val <= list2.val)        {            head = list1;            list1 = list1.next;        }        else            {            head = list2;            list2 = list2.next;              }        ListNode p = head;        while(list1 != null && list2 != null){            if(list1.val <= list2.val){                p.next = list1;                list1 = list1.next;            }            else{                p.next = list2;                list2 = list2.next;            }            p = p.next;            }        if(list1 != null) p.next = list1;        if(list2 != null) p.next = list2;        return head;    }}
0 0
原创粉丝点击