LeetCode初级算法--链表02:合并两个有序链表
一、引子
这是由LeetCode官方推出的的经典面试题目清单~
这个模块对应的是探索的初级算法~旨在帮助入门算法。我们第一遍刷的是leetcode推荐的题目。
二、题目
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
1、思路
首先我们看到的数一个有序的链表,所以我们可以先比较两个链表长度相等的部分,按照顺序进行排列,对于剩下一个链表的部分,直接插入到最终的链表中,详细过程见代码。
2、编程实现
# 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
"""
new_head = ListNode(0)
#返回的是合并后的列表 所以让一个节点等于这个空的节点
pHead = new_head
#进行排序
while l1 and l2:
if l1.val > l2.val:
new_head.next = l2
l2 = l2.next
else:
new_head.next = l1
l1 = l1.next
new_head = new_head.next
# 遍历剩下没遍历的列表
if l1:
new_head.next = l1
elif l2:
new_head.next = l2
return pHead.next
分享技术,乐享生活:我们的公众号计算机视觉这件小事每周推送“AI”系列资讯类文章,欢迎您的关注!
本文由博客一文多发平台 OpenWrite 发布!
审核编辑 黄昊宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
人工智能
+关注
关注
1781文章
45032浏览量
232418 -
机器学习
+关注
关注
66文章
8200浏览量
131244 -
深度学习
+关注
关注
73文章
5287浏览量
120178
发布评论请先 登录
相关推荐
数组和链表在内存中的区别 数组和链表的优缺点
数组和链表在内存中的区别 数组和链表的优缺点 数组和链表是常见的数据结构,用于组织和存储数据。它们在内存中的存储方式以及优缺点方面存在一些显著的差异。本文将详细探讨这些差异以及它们的优缺点。 1.
LinkedBlockingQueue基于单向链表的实现
的 LinkedBlockingQueue。它的底层基于单向链表实现。 先看一看它的 Node 内部类和主要属性、构造函数。 Node static class Node E > { E item; Node next; Node
![LinkedBlockingQueue基于单向<b class='flag-5'>链表</b>的实现](https://file1.elecfans.com/web2/M00/A9/C0/wKgZomUovDOABa-bAAAK2rnNtPw032.jpg)
如何创建单链表
实际中经常使用的一般为带头双向循环链表。 单链表1 # include # include typedef struct node { int data; //"数据域" 保存数据元素 struct
![如何创建单<b class='flag-5'>链表</b>](https://file1.elecfans.com/web2/M00/8D/F9/wKgZomTCJQuAJE2VAAAtEDcI2Mk870.jpg)
单链表和双链表的区别在哪里
单链表和双链表的区别 单链表的每一个节点中只有指向下一个结点的指针,不能进行回溯。 双链表的每一个节点给中既有指向下一个结点的指针,也有指向上一个结点的指针,可以快速的找到当前节点的前
![单<b class='flag-5'>链表</b>和双<b class='flag-5'>链表</b>的区别在哪里](https://file1.elecfans.com/web2/M00/8D/F0/wKgaomTB4S6AUae2AAC-TQLV9V0005.jpg)
评论