剑指Offer 16. 合并两个排序的链表 (链表)
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
题目地址
思路
思路1:循环:如果两个链表不为空,进行比较,将小的赋给合并的指针头,小的链表走一步,合并链表走一步,如果有一个为空,跳出循环,并将另一不为空的链表后续部分赋给合并链表
思路2:递归:如果第一个链表为空,则返回第二个链表,如果第二个链表为空,则返回第一个链表,如果两个链表都为空,结果为空
两个链表都是排序好的,我们只需要从头遍历链表,判断当前指针,哪个链表的值小,即赋给合并链表指针。
Python
# -*- coding:utf-8 -*-
class ListNode:
def __init__(self, x):
self.val = x
self.next = None node1 = ListNode(1)
node2 = ListNode(3)
node3 = ListNode(5)
node1.next = node2
node2.next = node3
node4 = ListNode(2)
node5 = ListNode(4)
node6 = ListNode(6)
node4.next = node5
node5.next = node6 class Solution:
# 返回合并后列表
def Merge(self, pHead1, pHead2):
# 循环
# newHead = ListNode(-1)
# pre = newHead
# while pHead1 and pHead2:
# if pHead1.val < pHead2.val:
# pre.next = pHead1
# pHead1 = pHead1.next
# else:
# pre.next = pHead2
# pHead2 = pHead2.next
# pre = pre.next
# pre.next = pHead1 if pHead1 else pHead2
# return newHead.next # 递归
if not pHead1:
return pHead2
if not pHead2:
return pHead1
newHead = None
if pHead1.val < pHead2.val:
newHead = pHead1
newHead.next = self.Merge(pHead1.next, pHead2)
else:
newHead = pHead2
newHead.next = self.Merge(pHead1, pHead2.next)
return newHead if __name__ == '__main__':
result = Solution().Merge(node1,node4)
print('合并链表:',end = ' ')
while result:
print(result.val,end = ' ')
result = result.next
剑指Offer 16. 合并两个排序的链表 (链表)的更多相关文章
- [剑指Offer] 16.合并两个排序链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. [思路1]递归 /* struct ListNode { int val; struct Lis ...
- [剑指offer] 16. 合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解法一: 非递归解 class Solution { public: ListNode *Mer ...
- 《剑指offer》 合并两个排序的链表
本题来自<剑指offer> 合并两个排序的链表 题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 思路: A:采用递归的方式(C++ C ...
- 剑指Offer:合并两个排序的链表【25】
剑指Offer:合并两个排序的链表[25] 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 题目分析 每次都是比较箭头节点,把小节点连接到已经合 ...
- 剑指 Offer 25. 合并两个排序的链表
剑指 Offer 25. 合并两个排序的链表 Offer 25 该问题的原型就是多项式的合并. 实现较简单,没有特殊需要注意的问题. package com.walegarrett.offer; /* ...
- 【剑指Offer】合并两个排序的链表 解题报告(Python)
[剑指Offer]合并两个排序的链表 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interview ...
- 【Java】 剑指offer(25) 合并两个排序的链表
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照 ...
- Go语言实现:【剑指offer】合并两个排序的链表
该题目来源于牛客网<剑指offer>专题. 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. Go语言实现: //递归 func merge(l ...
- [剑指offer]25.合并两个排序的链表(迭代+递归)
25.合并两个排序的链表 题目 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4 输出:1-> ...
随机推荐
- ftp权限设置大全!!!
1.登录和对匿名用户的设置write_enable=YES //是否对登录用户开启写权限.属全局性设置.默认NOlocal_enable=YES ...
- LATCH_VARIANT = Magna compile
after: LATCH_VARIANT = Magna in m_project_cfg.mak of PG_.. 1. first error: SED tmp__.dep/bin/sh: / ...
- 6、Spring-Kafka4
4.1. Using Spring for Apache Kafka This section offers detailed explanations of the various concerns ...
- 搭建一个Web Server站点
题:搭建一个Web Server站点.安装web服务,并在本地创建index.html测试 1.安装http服务 yum -y install httpd 2.进入网站目录 cd /var/www/h ...
- css的再深入7(更新中···)
1.transparent 透明的 2.placeholder 提示语 写页面 搞清结构层次, 保证模块化,让他们之间不能受到影响 (1) 元素性质 (2) 标准流 浮动带来的脱离文档流撑不起父级 ...
- GEC6818交叉开发环境搭建拟稿
为manjaro linux配置交叉工具链 为gec6818开发版下载一个arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 ...
- promise封装的ajax
var myNewAjax=function(url){ return new Promise(function(resolve,reject){ var xhr = new XMLHttpRequ ...
- Bytom信息上链教程
比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 用比原链 ...
- css基础参考文档
block inline-block inline区别 absolute定位详解:https://www.jianshu.com/p/a3da5e27d22b css浮动详解 float浮动 div变 ...
- CORS跨域请求
一.问题: 服务器端代码 from flask import Flask from flask import make_response from flask import jsonify app = ...