zoukankan      html  css  js  c++  java
  • Leetcode 21合并两个有序链表

    咕咕咕,之前忙着看Django,又咕了leetcode好多天,今天开始每天一题leetcode加题解启动(发出了不咕咕咕的叫声

    今天的题目是这样的
    将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
    示例:
    输入:1->2->4, 1->3->4
    输出:1->1->2->3->4->4

    题意清晰,是一道关于链表的入门题
    在这里先写一下在python中链表的定义,由于python中没有指针这个概念,所以在python中使用一个链表节点类来定义链表

    class ListNode():
    	def __init__(self,value,next = None):
    		self.val = value
    

    这样next这个类属性就指向了下一个ListNode类,实现了链表的效果
    现在重新来看题目
    两个已经排好序的链表,然后重新组合成一个新的链表,那只要逐一对比两个老链表,然后让新链表指向两个老链表的节点就可以了,下面是代码

    # 执行用时 : 36 ms, 在Merge Two Sorted Lists的Python提交中击败了50.40% 的用户
    # 内存消耗 : 11.8 MB, 在Merge Two Sorted Lists的Python提交中击败了0.57% 的用户
    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution(object):
        def mergeTwoLists(self, l1, l2):
            """
            :type l1: ListNode
            :type l2: ListNode
            :rtype: ListNode
            """
            #创建一个新的链表的头
            first = ListNode(0)
            head = first
            #当两个老链表有一个都不为空时执行
            while l1 and l2:
                if l1.val >= l2.val:
                    head.next = l2
                    l2 = l2.next
                else:
                    head.next = l1
                    l1 = l1.next
                head = head.next
            if l1 is not None:
                head.next = l1
            if l2 is not None:
                head.next = l2
            return first.next    
    
  • 相关阅读:
    springboot2.0整合es的异常总结
    redis的主从模式搭建及注意事项
    一个可配置的爬虫采集系统的方案实现
    初识 go 语言:方法,接口及并发
    初识 go 语言:数据类型
    Science论文"Clustering by fast search and find of density peaks"学习笔记
    OpenCV和Matplotlib色彩空间模式不一致的问题
    Using OpenCV Java with Eclipse
    KMeans聚类算法Hadoop实现
    Ubuntu环境变量——添加与删除
  • 原文地址:https://www.cnblogs.com/yfc0818/p/11072636.html
Copyright © 2011-2022 走看看