输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
2017-11-08 10:12
337 查看
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
ListNode list1_l=null;
ListNode list2_l=null;
ListNode list2_h=null;
ListNode list1_h=null;
ListNode list2_s_h=null;
ListNode ln=list1;
while(list1!=null && list2!=null){
System.out.println("1:"+list1.val);
System.out.println("2"+list2.val);
while(list1!=null && list1.val <=list2.val){
//从list1中查找值小于list2中值的节点
list1_l=list1;
list1=list1.next;
}
list1_h=list1_l.next;//记录list1的下一次遍历的头结点
if(list1 ==null){
//list1中的值全部小于list2的值
list1_l.next=list2;
}else{
//找到当前list1中小于list2的最后一个节点
//开始寻找list2中大于所找list1节点的位置
list2_h=list2;//记录当前遍历下list2的头结点
while(list2!=null && list2.val <=list1.val){
list2_l=list2;
list2=list2.next;
}
if(list2 ==null ){
list2_l.next=list1_l.next;
list1_l.next=list2_h;
}else{
//记录list2的下一次遍历的头结点
list2_s_h= list2_l.next;
list2_l.next=list1_l.next;
list1_l.next=list2_h;
}
}
//更新新的头结点
list1=list1_h;
list2=list2_s_h;
}
return ln;
}
}
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
ListNode list1_l=null;
ListNode list2_l=null;
ListNode list2_h=null;
ListNode list1_h=null;
ListNode list2_s_h=null;
ListNode ln=list1;
while(list1!=null && list2!=null){
System.out.println("1:"+list1.val);
System.out.println("2"+list2.val);
while(list1!=null && list1.val <=list2.val){
//从list1中查找值小于list2中值的节点
list1_l=list1;
list1=list1.next;
}
list1_h=list1_l.next;//记录list1的下一次遍历的头结点
if(list1 ==null){
//list1中的值全部小于list2的值
list1_l.next=list2;
}else{
//找到当前list1中小于list2的最后一个节点
//开始寻找list2中大于所找list1节点的位置
list2_h=list2;//记录当前遍历下list2的头结点
while(list2!=null && list2.val <=list1.val){
list2_l=list2;
list2=list2.next;
}
if(list2 ==null ){
list2_l.next=list1_l.next;
list1_l.next=list2_h;
}else{
//记录list2的下一次遍历的头结点
list2_s_h= list2_l.next;
list2_l.next=list1_l.next;
list1_l.next=list2_h;
}
}
//更新新的头结点
list1=list1_h;
list2=list2_s_h;
}
return ln;
}
}
相关文章推荐
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- java 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。C++
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- java实现输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- 将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:
- 输入一个整数,如果该整数大于1000,则输出“big”,如果该整数介于100到1000之间(包含两个边界),则输出“middle”,如果上面两种情况都不满足,输出”small“
- 输入正整数t,n,然后是n个正整数(单调非递增),若n个数中某几个数的和是t,输出这些加法表达式(表达式不重复输出),无解输出NONE
- 输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然按照递增排序
- 输入一个整数,如果该整数大于1000,则输出“big”,如果该整数介于100到1000之间(包含两个边界),则输出“middle”,如果上面两种情况都不满足,输出”small“
- C语言输入十个数,任意相邻的两个数不同,输出所有的递增,递减序列
- 输入两个数列,分别以某数为结束标志,分别生成递增有序单链表;再将这两个表合并为一个递增有序单链表,输出表中各结点的值
- Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。 Input 输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义