剑指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 合并两个排序的链表相关推荐

  1. 剑指 Offer合并两个排序的链表

    题目描述 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2-> ...

  2. 剑指Offer——合并两个排序的链表

    1.题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 2.代码实现 1 package com.baozi.offer; 2 3 /** 4 * ...

  3. 剑指offer-17.合并两个排序的链表

    https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337?tpId=13&tqId=11169&tPage= ...

  4. java listnode 合并链表_剑指offer:合并两个排序的链表(Java)

    1.问题描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 2.思路 方法1:非递归方法 根据题目这个很类似排序中的外排过程,两个数组分别排好序,然后再 ...

  5. python数据结构剑指offer-合并两个排序的链表

    合并两个排序的链表 描述 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的. 数据范围: 0 \le n \le 10000≤n≤1000,-1000 \le ...

  6. 剑指offer25-合并两个排序的链表

    问题描述 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2-> ...

  7. 剑指offer 合并2个排序的链表

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解决方案: 用递归的思想. /* public class ListNode {int val; ...

  8. 【剑指Offer专题】链表系列:从尾到头打印链表、反转链表、回文链表、合并两个排序的链表(C++和Python实现)...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 剑指Offer(三):从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每 ...

  9. 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java

    <LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...

最新文章

  1. linux文件IO与内存映射:用户空间的IO缓冲区
  2. 网络空间安全之信息追踪——学习笔记 利用门户网站,综合信息追踪
  3. 阅读之web应用安全
  4. ux和ui_首先要做的— UX / UI案例研究
  5. 83. 删除排序链表中的重复元素
  6. 人生最重要的十个健康伴侣
  7. lz0-007 读书笔记11
  8. 你还在盲目做抖音吗?
  9. 【codevs1048】石子归并
  10. 安装anaconda,jupyter基本操作说明快捷键使用
  11. 大表join大表_阿里开发规范:超过三张表,禁止join骚操作
  12. iic标准c语言,I2C总线之(三)---以C语言理解IIC
  13. css 页面机械/数字电子 字体怎么实现?
  14. ipython安装过程_IPython安装过程 @win7 64bit
  15. 谈谈多源数据融合-科普基本概念篇
  16. Vue 前端显示文件流图片
  17. Android摇一摇振动效果Demo
  18. panda提取时间戳中的日期_《我在时间尽头等你》中的文案,总有一个戳中你的泪点...
  19. Actin机器人控制软件,专注于机器人路径规划
  20. 秋招算是结束了,写个总结吧!

热门文章

  1. 音视频技术开发周刊 | 189
  2. 走进武汉,探索多媒体开发最佳实践
  3. Zookeeper 的 ZAB 协议
  4. 数据存储介质销毁:护航数据安全的最后一公里
  5. OpenPitrix 是一款开源多云应用程序管理系统
  6. 计算机视觉实时目标检测 TensorFlow Object Detection API
  7. leetcode 643. Maximum Average Subarray I | 643. 子数组最大平均数 I(Java)
  8. leetcode 简单题合集(Java版)
  9. leetcode 189. 旋转数组
  10. 【Git】从Git远程存储库中删除所有.pyc编译文件;附常用gitignore配置