合并两个排序的链表

youzhihua · · 650 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

题目描述

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

思路

1.仿照归并排序中merge的逻辑即可。

Java代码实现

    public ListNode Merge(ListNode list1,ListNode list2) {
        ListNode p = new ListNode(-1);
        ListNode res = p;
        while(list1 != null || list2 != null){
            int cur1 = list1 == null ? Integer.MAX_VALUE : list1.val;
            int cur2 = list2 == null ? Integer.MAX_VALUE : list2.val;
            if(cur1 < cur2){
                p.next = new ListNode(cur1);
                list1 = list1.next;
            }else{
                p.next = new ListNode(cur2);
                list2 = list2.next;
            }
            p = p.next;
        }
        return res.next;
    }

Golang代码实现

func Merge(list1 *ListNode,list2 *ListNode)*ListNode{
    res := new(ListNode)
    p := res
    
    for list1 != nil || list2 != nil {
        if list1 == nil{
            p.Next = &ListNode{list2.Val,nil}
            list2 = list2.Next
            p = p.Next
            continue
        }
        
        if list2 == nil{
            p.Next = &ListNode{list1.Val,nil}
            list1 = list1.Next
            p = p.Next
            continue
        }
        
        cur1 := list1.Val
        cur2 := list2.Val
        
        if cur1<cur2{
            p.Next = &ListNode{cur1,nil}
            list1 = list1.Next
        }else{
            p.Next = &ListNode{cur2,nil}
            list2 = list2.Next
        }
    }
    return res.Next
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:youzhihua

查看原文:合并两个排序的链表

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

650 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传