码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-09-17 20:44:34      阅读:30      评论:0      收藏: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!