21. Merge Two Sorted Lists

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.

Example:

Input: 1->2->4,
1->3->4 Output: 1->1->2->3->4->4

分析,拿到lista和listb,从第一个结点开始分析。

对比第一个结点,把值较小的,设置为current1,另外一个设置为current2。

复制代码
 if (l1 == null)
            {
                return l2;
            }

            if (l2 == null)
            {
                return l1;
            }

            ListNode current1;
            ListNode current2;
            if (l1.val <= l2.val)
            {
                current1 = l1;
                current2 = l2;
            }
            else
            {
                current1 = l2;
                current2 = l1;
            }
复制代码

 

 

 

复制代码
  public ListNode MergeTwoLists(ListNode l1, ListNode l2) {
         ListNode current1Prev = null;
            ListNode current2Next;
            ListNode head;
            if (l1 == null)
            {
                return l2;
            }

            if (l2 == null)
            {
                return l1;
            }

            ListNode current1;
            ListNode current2;
            if (l1.val <= l2.val)
            {
                current1 = l1;
                current2 = l2;
            }
            else
            {
                current1 = l2;
                current2 = l1;
            }

            head = current1;
            while (current1 != null && current2 != null)
            {
                if (current1.val <= current2.val)
                {
                    current1Prev = current1;
                    current1 = current1.next;
                }
                else
                {
                    current1Prev.next = current2;
                    current1Prev = current2;
                    current2Next = current2.next;
                    current2.next = current1;
                    current2 = current2Next;
                }
            }

            if (current1 == null)
            {
                current1Prev.next = current2;
            }

            return head;
    }
复制代码

 

作者:Chuck Lu    GitHub    
posted @   ChuckLu  阅读(126)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示