题解 | #合并有序链表# go语言实现

合并有序链表

http://www.nowcoder.com/practice/a479a3f0c4554867b35356e0d57cf03d

go语言实现

package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
  * 
  * @param l1 ListNode类 
  * @param l2 ListNode类 
  * @return ListNode类
*/
func mergeTwoLists( l1 *ListNode ,  l2 *ListNode ) *ListNode {
    // write code here
//  其中一个为空,则返回另外一个
    if l1 == nil {
        return l2
    }
    if l2 == nil {
        return l1
    }

//  得到一个头节点
    var head *ListNode
    if l1.Val > l2.Val {
        head = l2
        l2 = l2.Next
    }else{
        head = l1
        l1 = l1.Next
    }

//  node节点主要用于引用下一个元素节点
    node := head
    for l1 != nil || l2 != nil {
//      两个都不为空,则需要比较两个链表节点大小,并把对应节点连接到node的next中
        if l1 != nil && l2 != nil {
            if l1.Val > l2.Val {
                node.Next = l2
                l2 = l2.Next
            }else{
                node.Next = l1
                l1 = l1.Next
            }
            node = node.Next
            continue
        }

//      其中一个链表为空
        if l1 != nil {
            node.Next = l1
            l1 = nil
        }
        if l2 != nil {
            node.Next = l2
            l2 = nil
        }
    }

    return head
}
全部评论

相关推荐

04-25 19:29
已编辑
宁波大学 测试开发
被普调的六边形战士很高大:你我美牛孩
点赞 评论 收藏
分享
面试官问:为什么不考研?该怎么回答啊😭我说现在的就业环境差到底了,还有就是我不想学数学,感觉面试官笑容都凝固了😢
DayDayNoBug的鲜芋球:我说的是“上学期其实尝试过去探索一些研究的方向,但感觉那些对我来说都没有很大的吸引力,相比起研究我可能更喜欢开发这种实践性的东西,它会让我觉得很有意思并且会为之深入进去”(虽然也不知这个回答怎么样哈哈哈哈哈哈)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务