合并两个排序的链表(代码的鲁棒性 链表)

来源:互联网 发布:如何编写小软件 编辑:程序博客网 时间:2024/06/07 02:31

题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

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 mergeHead = null;        ListNode current = null;        while (list1 != null && list2 != null)        {            if (list1.val <= list2.val)            {                if (mergeHead == null)                    mergeHead = current = list1;                else                {                    current.next = list1;                    current = current.next;                }                list1 = list1.next;            }            else            {                if (mergeHead == null)                    mergeHead = current = list2;                else                {                    current.next = list2;                    current = current.next;                }                list2 = list2.next;            }        }        if (list1 == null)            current.next = list2;        else            current.next = list1;        return mergeHead;    }}

思路二:递归

public class Solution {    public ListNode Merge(ListNode list1,ListNode list2) {        if (list1 == null) return list2;        if (list2 == null) return list1;        if (list1.val <= list2.val)        {            list1.next = Merge(list1.next, list2);            return list1;        }        else         {            list2.next = Merge(list1, list2.next);            return list2;        }    }}


原创粉丝点击