标签:链表 需要 区别 UNC leetcode return Golan func 没有
这道题很简单,只需要从头开始遍历两个链表,每次将两个链表的当前元素比较,值较小的结点就存入到新的链表
需要注意的是加入新表是l3,旧表是l1,l2,那么将旧的表结点插入新的表的时候需要如下方式
l3.Next=l1
l3=l3.Next
而不能是
l3=l1
l3=l3.Next
这两种方式的区别是前一种方式是改变当前结点的Next的值,这样才能构成一个新的链表
后一种方式改变了当前的结点,但是他上一个结点的Next却并没有指向当前这个结点,所以不能够构成一个新的链表
代码很简单,如下:
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { l3 := &ListNode{} resList := l3 for l1 != nil || l2 != nil { if l1 == nil { l3.Next = l2 l2 = l2.Next } else if l2 == nil { l3.Next = l1 l1 = l1.Next } else { if l1.Val <= l2.Val { l3.Next = l1 l1 = l1.Next } else { l3.Next = l2 l2 = l2.Next } } l3 = l3.Next } return resList.Next }
标签:链表 需要 区别 UNC leetcode return Golan func 没有
原文地址:https://www.cnblogs.com/gyyyl/p/13645338.html