输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
来源:互联网 发布:武汉app软件开发 编辑:程序博客网 时间:2024/05/13 17:12
题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
思路:这就是一个二路归并的实现。
不过就是初始数据是存储在链表当中的。
部分代码:
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
import java.util.ArrayList;
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1==null&&list2==null){//两个链表都是空的
return null;
}
ArrayList<ListNode> list11 = new ArrayList<>();
ArrayList<ListNode> list22 = new ArrayList<>();
while(list1!=null){
list11.add(list1);
list1 = list1.next;
}
while(list2!=null){
list22.add(list2);
list2 = list2.next;
}
if(list11.size()==0){
ListNode node1 = new ListNode(list22.get(0).val);
ListNode node2 = node1;
for(int i = 1;i<list22.size();i++){
node1.next = new ListNode(list22.get(i).val);
node1 = node1.next;
}
return node2;
}
if(list22.size()==0){
ListNode node1 = new ListNode(list11.get(0).val);
ListNode node2 = node1;
for(int i = 1;i<list11.size();i++){
node1.next = new ListNode(list11.get(i).val);
node1 = node1.next;
}
return node2;
}
ListNode node = new ListNode(list11.get(0).val>list22.get(0).val?list22.get(0).val:list11.get(0).val);
ListNode result = node;
//说明:此处用两个变量的原因,有人直接只定义一个变量,并且给变量初始化为null,但是注意当初始化为null的对象,内存并没有给它分配地址。
// 一个变量node是中间变量,相当于是指针当前所指的,而result就是返回的了。在最开始的时候,赋值result = node,是让result指向node的最 // 开始的位置。
int index1 = 0;
int index2 = 0;
if(list11.get(0).val>list22.get(0).val){
index2 = 1;
}else{
index1 = 1;
}
for(int i = 0;i<(list11.size()+list22.size());i++){
if(index1<list11.size()&&index2<list22.size()&&list11.get(index1).val>=list22.get(index2).val){
node.next = new ListNode(list22.get(index2).val);
node = node.next;
index2++;
if(index2==list22.size()){
break;
}
}else if(index1<list11.size()&&index2<list22.size()){
node.next = new ListNode(list11.get(index1).val);
node = node.next;
index1++;
if(index1==list11.size()){
break;
}
}else{
break;
}
}
if(index1<list11.size()){
node.next = new ListNode(list11.get(index1).val);
node = node.next;
index1++;
}else{
node.next = new ListNode(list22.get(index2).val);
node = node.next;
index2++;
}
return result;
}
}
speak to myself:在编代码之前,我已经看出关键了,但是编出来的代码还是有一点繁琐。而且稍微一点失误,就不行。之后看了大家的代码,醍醐灌顶。还是要看看其他人的代码,当然是自己做完之后了。看看自己有什么优点,又有什么不足。取长补短,我相信,随着时间的过去,会有所提高的。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- java 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- java实现输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 合并两个单调递增的链表,使得合并后的链表也是有序
- 将两个有序递增的链表合成一个有序递增的链表
- 合并链表,单调不减
- 两个有序的链表合成一个有序的链表
- 将两个各自有序的链表,合成一个有序的链表
- 合并两个排序后的链表
- 将两个有序链表合成一个有序链表
- 旋转数组查找
- 实战2.Spark编译与部署(中)--Hadoop编译安装
- 2017 ACM-ICPC 沈阳赛(网络赛)
- hdu6195 cable cable cable
- 实战2.Spark编译与部署(下)--Spark编译安装
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
- 漫话C++之string字符串类的使用
- Java【Java开发集成 Swagger UI生成可视图的API文档(详细图解)】
- [LeetCode] 13.Roman to Integer
- 实战3.Spark编程模型(上)--编程模型及SparkShell实战
- 实战3.Spark编程模型(下)--IDEA搭建及实战
- 2017ACM乌鲁木齐赛区A题banana
- 实战4.Spark运行架构
- 学习jdk1.8新特性笔记