Python实现合并两个有序链表的方法示例
本文实例讲述了Python实现合并两个有序链表的方法。分享给大家供大家参考,具体如下:
思路:先选出第一个节点,然后遍历两个链表,把小的作为当前节点的下一个节点,一直到其中一个链表遍历完,这时候把另一个链表直接接上就好
# 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 """ #先考虑链表其中一个为空的情况 if not l1: return l2 if not l2: return l1 curNode1 = l1 curNode2 = l2 #先选出第一个节点 if curNode1.val < curNode2.val: head = curNode1 curNode1 = curNode1.next else: head = curNode2 curNode2 = curNode2.next cur = head while curNode1 and curNode2: if curNode1.val < curNode2.val: cur.next = curNode1 curNode1 = curNode1.next else: cur.next = curNode2 curNode2 = curNode2.next cur = cur.next #一直循环到有一个链表先结束 #如果是链表1先结束,则拼上链表2剩余的那段 if not curNode1: cur.next = curNode2 #如果是链表2先结束,则拼上链表1剩余的那段 else: cur.next = curNode1 return head
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
相关推荐
-
python算法题 链表反转
链表的反转是一个很常见.很基础的数据结构题,输入一个单向链表,输出逆序反转后的链表,如图:上面的链表转换成下面的链表.实现链表反转有两种方式,一种是循环迭代,另外一种方式是递归. 第一种方式:循坏迭代 循坏迭代算法需要三个临时变量:pre.head.next,临界条件是链表为None或者链表就只有一个节点. # encoding: utf-8 class Node(object): def __init__(self): self.value = None self.next = None de
-
c语言链表基本操作(带有创建链表 删除 打印 插入)
复制代码 代码如下: #include <stdio.h>#include <stdlib.h>#include <malloc.h>#define LEN sizeof(struct Student)struct Student{ long num; float score; struct Student*next;};int n;int main(){ /*-----------------------------程序描述----------
-
面试题:用 Java 逆序打印链表
昨天的 Java 实现单例模式 中,我们的双重检验锁机制因为指令重排序问题而引入了 volatile 关键字,不少朋友问我,到底为啥要加 volatile 这个关键字呀,而它,到底又有什么神奇的作用呢? 对 volatile 这个关键字,在昨天的讲解中我们简单说了一下:被 volatile 修饰的共享变量,都会具有下面两个属性: 保证不同线程对该变量操作的内存可见性. 禁止指令重排序. 共享变量:如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量. 可见性:一个线
-
PHP从尾到头打印链表实例讲解
题目 输入一个链表,从尾到头打印链表每个节点的值. 题解 一种是使用栈. 第二种是递归. 代码 //递归版本 function printListFromTailToHead($head) { if($head == NULL){ return []; } $arr = array(); $cur = $head; if($cur->next != null){ $arr = printListFromTailToHead($cur->next); } array_push($arr, $cu
-
C++实现打印两个有序链表公共部分的方法
本文实例讲述了C++实现打印两个有序链表公共部分的方法.分享给大家供大家参考,具体如下: 题目: 给定两个有序链表的头指针head1和head2,打印两个链表的公共部分. 解题思路及代码: 1.head1的值小于head2,则head1往下移动 2.head1的值小于head2,则head2往下移动 3.相等则打印任何一个链表节点的值,head1和head2都往下移动. 4.当head1或head2移动到NULL,终止. 算法C++代码: typedef struct Node { int da
-
Python3实现的判断回文链表算法示例
本文实例讲述了Python3实现的判断回文链表算法.分享给大家供大家参考,具体如下: 问题: 请判断一个链表是否为回文链表. 方案一:指针法 class Solution: def isPalindrome(self, head): """ 判断一个链表是否是回文的,很自然的想法就是两个指针,一个指针从前往后走,一个指针从后往前走,判断元素值是否相同,这里要分几个步骤来进行求解: 1.找到链表长度的一半,用追赶法,一个指针一次走两步,一个指针一次走一步 2.将后一半数组转置
-
基于python实现从尾到头打印链表
这篇文章主要介绍了基于python实现从尾到头打印链表,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 思路 遍历链表,把结构保存在list里面,然后把list逆序输出 代码 # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = None
-
Java编程实现从尾到头打印链表代码实例
问题描述:输入一个链表的头结点,从尾巴到头反过来打印出每个结点的值. 首先定义链表结点 public class ListNode { int val; ListNode next = null; ListNode(int val){ this.val = val; } } 思路1:此题明显想到是利用栈的思想,后进先出,先遍历链表,依次将结点值进栈.最后在遍历栈出栈. public static Stack<Integer> printListReverse_Stack(ListNode li
-
对python实现合并两个排序链表的方法详解
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 1.迭代方法 def Merge(self, pHead1, pHead2): p1, p2 = pHead1, pHead2 if p1 and p2: if p1.val < p2.val: head = p1 p1 = p1.next else: head = p2 p2 = p2.next cur = head elif p1: return p1 else: return p2 while p
-
Python实现合并两个有序链表的方法示例
本文实例讲述了Python实现合并两个有序链表的方法.分享给大家供大家参考,具体如下: 思路:先选出第一个节点,然后遍历两个链表,把小的作为当前节点的下一个节点,一直到其中一个链表遍历完,这时候把另一个链表直接接上就好 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(obj
-
python实现合并两个有序列表的示例代码
题目描述 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. LeetCode原题地址:https://leetcode-cn.com/problems/merge-two-sorted-lists/ 测试用例 示例1 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例2 输入:l1 = [], l2 = [] 输出:[] 示例3 输入:l1 = [], l2 = [0] 输出:[0] 代码详解 因为Lee
-
JS实现的合并两个有序链表算法示例
本文实例讲述了JS实现的合并两个有序链表算法.分享给大家供大家参考,具体如下: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 可以直接运行的方案: <script> function Node(element) { this.element = element;//当前节点的元素 this.next = n
-
c++ 如何合并两个有序链表
1.题目要求 这是一道求职面试时经常要求手写或者机试的经典题目. 已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序.结果链表要包含head1和head2的所有节点,即使节点值相同. 注意:不能开辟新空间来存储合并后的链表.如果第一次做该题,很容易会想到使用新链表来存储合并后的有序链表.虽然可以如此实现,但是不符合常规解法和面试官的要求. 2.非递归实现 算法过程: 输入:两个有序的单链表head1与head2: 输出:合并后的有序单链表mergeHead: 算法描
-
PHP实现合并两个有序数组的方法分析
本文实例讲述了PHP实现合并两个有序数组的方法.分享给大家供大家参考,具体如下: $arr1 = array(1,2,3,4,5,6,7,8); $arr2 = array(3,4,5,7,9,10); //方法1 function mergeOrderly1($arr1,$arr2){ $i=0;$j=0; $int = array(); while($i<count($arr1) && $j<count($arr2)){ $int[] = $arr1[$i]<$arr
-
PHP实现合并两个排序链表的方法
本文实例讲述了PHP实现合并两个排序链表的方法.分享给大家供大家参考,具体如下: 问题 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解决思路 简单的合并排序.由于两个数列本来就是递增的,所以每次将两个数列中较小的部分拿过来就可以了. 实现代码 <?php /*class ListNode{ var $val; var $next = NULL; function __construct($x){ $this->val = $x; } }*/ f
-
TypeScript合并两个排序链表的方法详解
目录 前言 思路分析 实现代码 测试用例 示例代码 前言 给定两个递增排序的链表,如何将这两个链表合并?合并后的链表依然按照递增排序.本文就跟大家分享一种解决方案,欢迎各位感兴趣的开发者阅读本文. 思路分析 经过前面的学习,我们知道了有关链表的操作可以用指针来完成.同样的,这个问题也可以用双指针的思路来实现: p1指针指向链表1的头节点 p2指针指向链表2的头节点 声明一个变量存储合并后的链表,比对两个指针指向的节点值大小: 如果p1指针指向的节点值比p2指向的值小,合并后的链表节点就取p1节点
-
JavaScript简单实现合并两个Json对象的方法示例
本文实例讲述了JavaScript简单实现合并两个Json对象的方法.分享给大家供大家参考,具体如下: $.mergeJsonObject = function(jsonbject1, jsonbject2) { var resultJsonObject = {}; for (var attr in jsonbject1) { resultJsonObject[attr] = jsonbject1[attr]; } for (var attr in jsonbject2) { resultJso
-
Python实现求两个数组交集的方法示例
本文实例讲述了Python实现求两个数组交集的方法.分享给大家供大家参考,具体如下: 一.题目 给定两个数组,编写一个函数来计算它们的交集. 例1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 例2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [4,9] 说明: 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致 我们可以不考虑输出结果的顺序 二.解法 首先把两个数组都排序,然后两个数
随机推荐
- mysql 5.7.17 winx64安装配置方法图文教程
- webpack+vue.js快速入门教程
- Vue-resource实现ajax请求和跨域请求示例
- win7下oracle 10g安装图文教程
- 使用go和python递归删除.ds store文件的方法
- python实现带验证码网站的自动登陆实现代码
- Python中的特殊语法:filter、map、reduce、lambda介绍
- 利用PyInstaller将python程序.py转为.exe的方法详解
- linux上TCP connection timeout问题解决办法
- AJAX在GB2312的中文编码传输 AJAX特殊字符编码正确方法
- vue2.0实战之基础入门(1)
- Redis教程(三):List数据类型
- 了解一点js的Eval函数
- javascript用层模拟可移动的小窗口
- javascript实现鼠标放上后下边对应内容变换的效果
- XP超级实用刻录技巧两则
- ubuntu系统下apache配置虚拟主机及反向代理详解
- 详解Android Dialog对话框的五种形式
- jquery多级树形下拉菜单的实例代码
- C#中FileStream的对比及使用方法