LeetCode:合并两个有序链表(c#)

五迷三道 提交于 2020-01-01 19:59:32

题目内容

在这里插入图片描述

代码实现

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode MergeTwoLists(ListNode l1, ListNode l2) 
    {
        //读取最小的节点作为根节点
        var head = ReadMinNode(ref l1, ref l2);
        //最后一个节点
        var node = head;
        while (node != null)
        {
            //循环读取最小节点赋值到最后一个节点的next节点
            node.next = ReadMinNode(ref l1, ref l2);
            //赋值next节点为最后一个节点
            node = node.next;
        }
        return head;
    }

    /// <summary>
    /// 读取最小的节点
    /// </summary>
    private ListNode ReadMinNode(ref ListNode l1, ref ListNode l2)
    {
        ListNode ret;
        if (l1 == null)
        {
            ret = l2;
            l2 = l2?.next;
        }
        else if (l2 == null)
        {
            ret = l1;
            l1 = l1?.next;
        }
        else if (l1.val < l2.val)
        {
            ret = l1;
            l1 = l1?.next;
        }
        else
        {
            ret = l2;
            l2 = l2?.next;
        }
        return ret;
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!