剑指Offer25 合并两个排序的链表
剑指Offer 25. 合并两个排序的链表
剑指Offer 25. 合并两个排序的链表
这题是一道简单题,如果学习了数据结构当中的链表的话,可以很轻松就想出解题过程:
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/
class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {ListNode newhead=new ListNode(1);ListNode temNode = newhead;ListNode temNode1 = l1;ListNode temNode2 = l2;while (temNode1!=null && temNode2!=null) {if (temNode1.val<=temNode2.val) {temNode.next=new ListNode(temNode1.val);temNode1=temNode1.next;}else {temNode.next=new ListNode(temNode2.val);temNode2=temNode2.next;}temNode = temNode.next;}if (temNode1!=null || temNode2!=null) {ListNode newNode = temNode1==null ? temNode2:temNode1;while (newNode!=null) {temNode.next = new ListNode(newNode.val);newNode = newNode.next;temNode = temNode.next;}}return newhead.next;}
}
先新建两个节点newhead和temnode作为我们要返回链表的头节点和替身,再新建两个节点temNode1和temNode2来代替l1和l2。当temNode1和temNode2都不为null时,也就是两个链表都没有遍历完,然后根据temNode1和temNode2的值来决定将谁的值作为新加在temNode后的节点的值。当temNode1或temNode2中有一个为null,即短的那一个链表遍历完了,我们需要遍历较长的链表的剩余部分。
写完后,经过简单的调试,提交通过。
看了看代码,发现代码中还有待改善的地方:
- 可以不使用temNode1和temNode2来代替l1和l12
- temNode.next等于的是根据值新建的节点,有一点麻烦
根据上面的想法后用Python3写的代码:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = Noneclass Solution:def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:newhead = ListNode()head = newheadwhile l1!=None and l2!=None:if l1.val<=l2.val:newhead.next = l1l1 = l1.nextelse:newhead.next = l2l2 = l2.nextnewhead = newhead.nextif l1!=None or l2!=None:newNode = l2 if l1 == None else l1while newNode != None:newhead.next = newNodenewhead = newhead.nextnewNode = newNode.nextreturn head.next
剑指Offer25 合并两个排序的链表相关推荐
- 剑指 Offer合并两个排序的链表
题目描述 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2-> ...
- 剑指Offer——合并两个排序的链表
1.题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 2.代码实现 1 package com.baozi.offer; 2 3 /** 4 * ...
- 剑指offer-17.合并两个排序的链表
https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337?tpId=13&tqId=11169&tPage= ...
- java listnode 合并链表_剑指offer:合并两个排序的链表(Java)
1.问题描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 2.思路 方法1:非递归方法 根据题目这个很类似排序中的外排过程,两个数组分别排好序,然后再 ...
- python数据结构剑指offer-合并两个排序的链表
合并两个排序的链表 描述 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的. 数据范围: 0 \le n \le 10000≤n≤1000,-1000 \le ...
- 剑指offer25-合并两个排序的链表
问题描述 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2-> ...
- 剑指offer 合并2个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解决方案: 用递归的思想. /* public class ListNode {int val; ...
- 【剑指Offer专题】链表系列:从尾到头打印链表、反转链表、回文链表、合并两个排序的链表(C++和Python实现)...
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 剑指Offer(三):从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每 ...
- 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java
<LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...
最新文章
- linux文件IO与内存映射:用户空间的IO缓冲区
- 网络空间安全之信息追踪——学习笔记 利用门户网站,综合信息追踪
- 阅读之web应用安全
- ux和ui_首先要做的— UX / UI案例研究
- 83. 删除排序链表中的重复元素
- 人生最重要的十个健康伴侣
- lz0-007 读书笔记11
- 你还在盲目做抖音吗?
- 【codevs1048】石子归并
- 安装anaconda,jupyter基本操作说明快捷键使用
- 大表join大表_阿里开发规范:超过三张表,禁止join骚操作
- iic标准c语言,I2C总线之(三)---以C语言理解IIC
- css 页面机械/数字电子 字体怎么实现?
- ipython安装过程_IPython安装过程 @win7 64bit
- 谈谈多源数据融合-科普基本概念篇
- Vue 前端显示文件流图片
- Android摇一摇振动效果Demo
- panda提取时间戳中的日期_《我在时间尽头等你》中的文案,总有一个戳中你的泪点...
- Actin机器人控制软件,专注于机器人路径规划
- 秋招算是结束了,写个总结吧!
热门文章
- 音视频技术开发周刊 | 189
- 走进武汉,探索多媒体开发最佳实践
- Zookeeper 的 ZAB 协议
- 数据存储介质销毁:护航数据安全的最后一公里
- OpenPitrix 是一款开源多云应用程序管理系统
- 计算机视觉实时目标检测 TensorFlow Object Detection API
- leetcode 643. Maximum Average Subarray I | 643. 子数组最大平均数 I(Java)
- leetcode 简单题合集(Java版)
- leetcode 189. 旋转数组
- 【Git】从Git远程存储库中删除所有.pyc编译文件;附常用gitignore配置