【追求进步】合并两个排序的链表
来源:互联网 发布:服装设计师用搜图软件 编辑:程序博客网 时间:2024/04/30 08:00
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
这个题目的解法两种(递归方法和非递归方法):
在线代码:
/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { /* 第一种递归的解法 //合并两个链表的思想过程想明白就可以动手,本题没有其他方法 if(list1==null){ return list2; } if(list2==null){ return list1; } ListNode Merged=null; if(list1.val<list2.val){ Merged=list1; Merged.next=Merge(list1.next,list2);//递归的思想 }else{ Merged=list2; Merged.next=Merge(list1,list2.next);//递归的思想 } return Merged; } /* 这个题目知道合并思路做起来很简单 那么合并思路: 我们从合并两个链表的头结点开始,链表1的头结点的值小于链表2的头结点的值, 因此链表1的头结点将是合并后链表的头结点。 */ // */ //第二种非递归解法 if(list1==null){ return list2; } if(list2==null){ return list1; } ListNode root=new ListNode(); ListNode pointer=root; while(list1!=null&&list2!=null){ if(list1.val<list2.val){ pointer.next=list1; list1=list1.next; }else{ pointer.next=list2; list2=list2.next; } pointer=pointer.next; } //最重要的就是考虑如果链表1执行完毕,将剩余的链表2放在合并链表的后面 if(list1!=null){ pointer.next=list1; } if(list2!=null){ pointer.next=list2; } }}
0 0
- 【追求进步】合并两个排序的链表
- 【追求进步】两个链表的第一个公共结点
- 【追求进步】反转链表
- 【追求进步】和为S的两个数字
- 两个已排序链表的合并
- 两个已排序链表的合并
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序了的链表
- 合并两个排序的链表
- 23.合并两个排序的链表
- Android项目架构
- C++第二次上机实验--分段求值
- 高并发的epoll+线程池,epoll在线程池内
- c++实验2-分段函数求值
- 项目中的一些设置
- 【追求进步】合并两个排序的链表
- 课程project总结 - 蚁群算法
- iOS开发_报错/警告解决方法
- Myeclipse编码格式配置
- Scala学习6之scala与java的不同之总结2-重写override
- java多态有两种情况:重载和覆写
- c++上机实验2
- C++实验2-标准体重
- node.js学习笔记(1)--Node.js简介及环境安装