【LeetCode21】Merge Two Sorted Lists★
1.题目描述:

2.解题思路:
本题是要合并两个已经有序的单链表,思路很简单,有两种方法:非递归和递归。
3.Java代码:
(1)非递归:
为方便操作,定义一个辅助的头节点,然后比较原来两个链表的头节点,将小的那一个加入到合并链表,最后,当其中一个链表为空时,直接将另一个链表接入到合并链表即可。
//public class LeetCode21 为测试
public class LeetCode21 {
public static void main(String[] args) {
ListNode m1=new ListNode(1),m2=new ListNode(3),m3=new ListNode(5);
m1.next=m2;
m2.next=m3;
System.out.println("链表1:"+m1.val+"->"+m2.val+"->"+m3.val);
ListNode n1=new ListNode(2),n2=new ListNode(4),n3=new ListNode(6);
n1.next=n2;
n2.next=n3;
System.out.println("链表2:"+n1.val+"->"+n2.val+"->"+n3.val);
ListNode result=new Solution().mergeTwoLists(m1, n1);
if(result!=null){
System.out.print("合并链表:"+result.val);
ListNode resultNext=result.next;
while(resultNext!=null){
System.out.print("->"+resultNext.val);
resultNext=resultNext.next;
}
}
}
}
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode fakeHead=new ListNode(0);
ListNode p=fakeHead;
while(l1!=null&&l2!=null){
if(l1.val<l2.val){
p.next=l1;
l1=l1.next;
}else{
p.next=l2;
l2=l2.next;
}
p=p.next;
}
if(l1!=null) p.next=l1;
if(l2!=null) p.next=l2;
return fakeHead.next;
}
}
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
测试结果:

(2)递归:
//public class LeetCode21 为测试
public class LeetCode21 {
public static void main(String[] args) {
ListNode m1=new ListNode(1),m2=new ListNode(3),m3=new ListNode(5);
m1.next=m2;
m2.next=m3;
System.out.println("链表1:"+m1.val+"->"+m2.val+"->"+m3.val);
ListNode n1=new ListNode(2),n2=new ListNode(4),n3=new ListNode(6);
n1.next=n2;
n2.next=n3;
System.out.println("链表2:"+n1.val+"->"+n2.val+"->"+n3.val);
ListNode result=new Solution().mergeTwoLists(m1, n1);
if(result!=null){
System.out.print("合并链表:"+result.val);
ListNode resultNext=result.next;
while(resultNext!=null){
System.out.print("->"+resultNext.val);
resultNext=resultNext.next;
}
}
}
}
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null) return l2;
if(l2==null) return l1;
if(l1.val<l2.val){
l1.next=mergeTwoLists(l1.next, l2);
return l1;
}else{
l2.next=mergeTwoLists(l1, l2.next);
return l2;
}
}
}
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
测试结果:

【LeetCode21】Merge Two Sorted Lists★的更多相关文章
- 【leetcode】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 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】Merge Two Sorted Lists(easy)
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...
- 【Leetcode】【Hard】Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 解 ...
- 【leetcode】Merge k Sorted Lists(按大小顺序连接k个链表)
题目:Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...
- 【Leetcode】【Easy】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 ...
- 【LeeCode23】Merge k Sorted Lists★★★
1.题目描述: 2.解题思路: 题意:将K个已经排序的链表合并成一个排序的链表,分析并描述所用算法的复杂度. 方法一:基于“二分”思想的归并排序.本文用非递归和递归两种方法实现. (1)非递归:归并排 ...
- 【LeetCode】Merge Two Sorted Lists(合并两个有序链表)
这道题是LeetCode里的第21道题. 题目描述: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1-&g ...
- 【LeetCode-easy】Merge Two Sorted Lists
思路:指针p用于串联怎个链表,比较两个指针的大小,连接较小的一个.如果一个链表到达链尾,连接另外一个链表余下来的所以节点. public ListNode mergeTwoLists(ListNode ...
随机推荐
- springboot项目中js、css静态文件路径访问
springboot静态文件访问的问题,相信大家也有遇到这个问题,如下图项目结构. 项目结构如上所示,静态页面引入js.css如下所示. 大家肯定都是这样写的,但是运行的话就是出不来效果,图片也不显示 ...
- Flask结合Redis消息队列实现电影弹幕
用到的弹幕播放器插件:dplayer.js(开源) 1.安装Redis 2.安装flask-redis包 pip install flask-redis3.下载dplayer 页面搭建 1.引入资源 ...
- Eclipse中JSP生成的类文件存放在哪
Jsp页面看上去和HTML相似,但它实际上是作为Servlet运行的. 当JSP页面第一次被访问时,web容器解析jsp文件并将其转化为相应的java文件,该文件声明了一个servlet类,该类称为页 ...
- Android中的设计模式之观察者模式
参考 <设计模式:可复用面向对象软件的基础 >5.7 Observer 观察者 对象行为型模式 <设计模式解析> 18.4 Observer模式 <Android源码设计 ...
- Android性能优化系列之APK终极瘦身策略
第1条:使用一套资源 这是最基本的一条规则,但非常重要. 对于绝大对数APP来说,只需要取一套设计图就足够了.鉴于现在分辨率的趋势,建议取720p的资源,放到xhdpi目录. 相对于多套资源,只使用7 ...
- spring boot(18)-servlet、filter、listener
servlet.filter.listener的用法就不讲了,只讲如何在spring boot中配置它们.有两种方式,一种是从servlet3开始提供的注解方式,另一种是spring的注入方式 ser ...
- window平台搭建Hudson服务器
1.1 环境 Microsoft Windows server 2008 x64 1.2 资源下载 TortoiseSVN-1.7.11.23600-x64-svn-1.7.8.msi h ...
- Oracle EBS OPM release step
--release_step生产批 --created by jenrry SET serveroutput on DECLARE x_return_status VARCHAR2 (1); l_ex ...
- wget 的 使用方法
问题: 最近在使用 wget ,感觉有很多的功能都不会,现在进行写一篇文章,更新一些wget的使用技巧,防止以后忘记的时候,重新回来进行查阅. 正文: 现在经常使用: curl -O url 下载文件 ...
- Java中字符数组、String类、StringBuffer三者的相互转换
一.StringBuffer与String的相互转换 1.将StringBuffer转换成String StringBuffer类成员toString函数可将其转换成String类型. StringB ...