leetcode之21合并两个有序链表Golang

技术文章 1年前 (2020) 完美者
1,067 0

标签:链表   需要   区别   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
}

  

leetcode之21合并两个有序链表Golang

标签:链表   需要   区别   UNC   leetcode   return   Golan   func   没有   

原文地址:https://www.cnblogs.com/gyyyl/p/13645338.html

版权声明:完美者 发表于 2020-09-17 20:44:34。
转载请注明:leetcode之21合并两个有序链表Golang | 完美导航

暂无评论

暂无评论...