No.021:Merge Two Sorted Lists
问题:
Merge two sorted linked lists and return it as a new list.
The new list should be made by splicing together the nodes of the first two lists.
官方难度:
Easy
翻译:
合并2个已排序的链表,得到一个新的链表并且返回其第一个节点。
- 考虑输入节点存在null的情况,直接返回另一个节点。
- 节点的定义在No.002(Add Two Numbers)中有定义。
- 记录上一个节点last,保留第一个节点first。
- 以其中一条链表为基准,作为待排序的链表,其第一个节点记为l1。比较l1和l2的value值,如果l1的value是较大的一方,交换l1和l2节点,保证last节点的next指针指向l1节点。
- 当l1节点的next指针为null时,表明第一条链表完全有序,且最后一个节点的值小于另一条链表第一个节点的值,连接这两个节点,整条链表自然有序。
解题代码:
public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null) {
return l2;
}
if (l2 == null) {
return l1;
}
// 返回的第一个节点
ListNode first = l1.val > l2.val ? l2 : l1;
// 上一个节点
ListNode last = new ListNode(0);
while (true) {
if (l1.val > l2.val) {
// 交换l1节点和l2节点,保证下一次循环仍然以l1节点为基准
ListNode swapNode = l2;
l2 = l1;
l1 = swapNode;
}
// 将last节点的next指针指向l1,同时更新last
last.next = l1;
last = l1;
// 带排序的链表遍历完成,剩余链表自然有序
if (l1.next == null) {
l1.next = l2;
break;
}
l1 = l1.next;
}
return first;
}
mergeTwoLists
相关链接:
https://leetcode.com/problems/merge-two-sorted-lists/
PS:如有不正确或提高效率的方法,欢迎留言,谢谢!
No.021:Merge Two Sorted Lists的更多相关文章
- No.023:Merge k Sorted Lists
问题: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexit ...
- LeetCode之“链表”:Merge Two Sorted Lists && Merge k Sorted Lists
1. Merge Two Sorted Lists 题目链接 题目要求: Merge two sorted linked lists and return it as a new list. The ...
- python 中的堆 (heapq 模块)应用:Merge K Sorted Lists
堆是计算机科学中一类特殊的数据结构的统称.堆通常是一个可以被看做一棵树的数组对象.在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短 ...
- LeetCode专题-Python实现之第21题:Merge Two Sorted Lists
导航页-LeetCode专题-Python实现 相关代码已经上传到github:https://github.com/exploitht/leetcode-python 文中代码为了不动官网提供的初始 ...
- LeetCode OJ:Merge k Sorted Lists(归并k个链表)
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 类 ...
- LeetCode OJ:Merge Two Sorted Lists(合并两个链表)
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...
- leetcode解题报告(10):Merge Two Sorted Lists
描述 Merge two sorted linked lists and return it as a new list. > The new list should be made by sp ...
- [LeetCode] Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 这 ...
- LeetCode:21_Merge Two Sorted Lists | 合并两个排序列表 | Easy
题目:Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The new list sh ...
随机推荐
- 【VC++技术杂谈006】截取电脑桌面并将其保存为bmp图片
本文主要介绍如何截取电脑桌面并将其保存为bmp图片. 1. Bmp图像文件组成 Bmp是Windows操作系统中的标准图像文件格式. Bmp图像文件由四部分组成: (1)位图头文件数据结构,包含Bmp ...
- salesforce 零基础学习(四十五)Approval Lock & UnLock相关注意事项
我们都知道,当一条记录进入审批流程以后会自动加锁,apex提供Approval类的lock和unlock方法可以让我们使用代码对记录进行加锁和解锁. 项目中遇到一个需求,需要当某种情况下对记录进行先解 ...
- Text文档编码识别方法
Text文档编码识别方法 在做文档读取的时候,时常碰到编码格式不正确的问题,而要怎么样正确识别文档的编码格式,成了很多程序员的一块心病,今天我就要试着治好这块心病,这段代码的浓缩来自上千万文档的数据分 ...
- Data Flow的Error Output
一,在Data Flow Task中,对于Error Row的处理通过Error Output Tab配置的. 1,操作失败的类型:Error(Conversion) 和 Truncation. 2, ...
- JS函数无响应
自己定义了一个函数,比如说叫 addClass(),当按钮单击的时候响应 在添加了一些第三方Open JS API后就没反应了 原因分析:在代码没变动的情况下,很有可能是自己定义的函数名和第三方的冲突 ...
- OPEN CASCADE Multiple Variable Function
OPEN CASCADE Multiple Variable Function eryar@163.com Abstract. Multiple variable function with grad ...
- 【转】C# using的三种使用方法
原文地址http://www.cnblogs.com/fashui/archive/2011/09/29/2195061.html,感谢心茶前辈的总结. 1.using指令 using+命名空间,这种 ...
- Android 文件读写
一.分类 文件读写作为Android四大数据存储方式之一,又分为内部存储和外部存储两种: (1)内部存储(Internal storage): 总是可用. 文件默认情况存储在/data/data/包名 ...
- mac下安装tomcat
在window下面搭建tomcat环境很简单,那是因为我们不熟悉mac系统,当我们习惯了命令行的时候,也是so easy,只要通过以下几个步骤就可以解决,本人亲测可用,不会可以留言. 1.进入apch ...
- MySQL分区表的管理~2
一.维护分区 对于表的维护,我们一般有如下几种方式: CHECK TABLE, OPTIMIZE TABLE, ANALYZE TABLE和REPAIR TABLE. 而这几种方式,对于分区同样适用. ...