Leetcode_21_Merge Two Sorted Lists
->4->4,return 1->2->3->4->5->6
.
思路:
(1)题意为将两个有序链表合成一个有序链表。
(2)首先,分别对链表头结点判空,如果都为空,返回null;若L1为空,L2不为空,返回L1;如果L1为空,L2不为空,返回L2。
(2)其次,设置节点p为结果链表头结点,设置标志节点q指向结果链表尾部节点。
(3)再次,循环对待合并链表中的节点遍历,如果节点L1和L2都不为空,则比较其节点值,如果L1<L2,(第一次需要初始化p和q的值,p=L1,
q=p),将标志节点指向节点L1,标志节点后移,L1指向其后续节点,L1>=L2情况类似,直到循环结束。
(4)最后,需要判断未进行比较的节点,将这些节点追加为q的后续节点,返回p即为结果。
(5)其比较过程简单如下所示:
例如: L1: 1->3->5->13 L2: 2->4->14->17
(A)L1=1,L2=2,L1<L2,初始p=L1=1,q=p=1,L1=L1.next=3;
(B)L1=3,L2=2,L1>L2,此时,q.next=L2=2,q=q.next=2,L2=L2.next=4;
(C)L1=3,L2=4,L1<L2,此时,q.next=L1=3,q=q.next=3,L1=L1.next=5;
(D)L1=5,L2=4,L1>L2,此时,q.next=L2=4,q=q.next=4,L2=L2.next=14;
(E)L1=5,L2=14,L1<L2,此时,q.next=L1=5,q=q.next=5,L1=L1.next=13;
(F)L1=13,L2=14,L1<L2,此时,q.next=L1=13,q=q.next=13,L1=L1.next=null;
(G)由于L1为空,此时需将L2中后续节点追加到q后面即可。
算法代码实现如下所示:
public ListNode mergeTwoLists(ListNode L1, ListNode L2) { if (L1 == null && L2 == null return null; if (L1 == null && L2 != null) return L2; if (L1 != null && L2 == null) return L1; ListNode p = null; ListNode q = p; while (L1 != null && L2 != null) { if (L1.val < L2.val) { if (p == null) { p = L1; q = p; L1 = L1.next; continue; } q.next = L1; q = q.next; L1 = L1.next; } else { if (p == null) { p = L2; q = p; L2 = L2.next; continue; } q.next = L2; q = q.next; L2 = L2.next; } } while (L1 != null) { q.next = L1; q = q.next; L1 = L1.next; } while (L2 != null) { q.next = L2; q = q.next; L2 = L2.next; } return p; }
Leetcode_21_Merge Two Sorted Lists的更多相关文章
- [LeetCode] Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 这 ...
- [LeetCode] 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 ...
- [LintCode] Merge Two Sorted Lists 混合插入有序链表
Merge two sorted (ascending) linked lists and return it as a new sorted list. The new sorted list sh ...
- No.023:Merge k Sorted Lists
问题: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexit ...
- Merge k Sorted Lists
1. Merge Two Sorted Lists 我们先来看这个 问题: Merge two sorted linked lists and return it as a new list. The ...
- 71. Merge k Sorted Lists
Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...
- 【leetcode】Merge k Sorted Lists
Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...
- Merge Two Sorted Lists
Merge Two Sorted Lists https://leetcode.com/problems/merge-two-sorted-lists/ Merge two sorted linked ...
- Java for LeetCode 023 Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 解 ...
随机推荐
- 常见压缩格式分析,及 Linux 下的压缩相关指令
可先浏览加粗部分 一.常见压缩档 *.zip | zip 程式壓縮打包的檔案: (很常见,但是因为不包含文件名编码信息,跨平台可能会乱码) *.rar | winrar 程序压缩打包的档案:(在win ...
- JavaScript基础知识必知!!!
JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型. JS作用:表单验证,减轻服务端的压力:添加页面动画效果:动态更改页面内容:Ajax网络请求. 下面简单介 ...
- 关于bedtools merge 功能中sort 命令的解释
Bedtools 是一个很好的用来处理区间的工具,很多时候用这个底层语言编写的小工具比自己写的脚本运行快很多,但是这个工具中的某些功能对输入文件有一定的要求,比如说里面的一个merge函数,这是里面的 ...
- Dapper连接与事务的简单封装
增删改查方面,已经有Dapper.Extension这么强大的工具了,我也实在没啥好写的,就随手写了个看起来比较优雅的连接与事务的封装.在之后使用Dapper.Extension类库时,完全可以照搬进 ...
- 线程停止与volatile
1.使用标志位停止线程 在Java中希望停止线程,可以使用设置标志位的方法,如下例所示: class SimpleTask implements Runnable{ private boolean s ...
- android NDK的下载-文件太大
需要FQ,建议使用VPN,下载前准备点时间配置网络环境.我的百度网盘好像有~~不过忘记地址了,改天共享,或者私聊我. 2015.4 Android 5.1 Android Studio https:/ ...
- MacOS下对postgresql的简单管理操作
如何安装在另一篇blog中有述,这里不再赘述.本篇简单说一下安装完postgresql之后的一些管理和查询操作. 首先安装完postgresql之后需要初始化数据库: initdb /usr/loca ...
- (译)快速指南:用UIViewPropertyAnimator做动画
翻译自:QUICK GUIDE: ANIMATIONS WITH UIVIEWPROPERTYANIMATOR 译者:Haley_Wong iOS 10 带来了一大票有意思的新特性,像 UIViewP ...
- Dynamics CRM2016 Web API之创建记录
前篇介绍了通过primary key来查询记录,那query的知识点里面还有很多需要学习的,这个有待后面挖掘,本篇来简单介绍下用web api的创建记录. 直接上代码,这里的entity的属性我列了几 ...
- UIKit视图动画的微扩展
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 好久没写blog了,还不快快写来- ;] 我们知道在UIKit ...