描述
输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。
数据范围: 0≤�≤10000≤n≤1000,−1000≤节点值≤1000−1000≤节点值≤1000
要求:空间复杂度 �(1)O(1),时间复杂度 �(�)O(n)
如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},转换过程如下图所示:
或输入{-1,2,4},{1,3,4}时,合并后的链表为{-1,1,2,3,4,4},所以对应的输出为{-1,1,2,3,4,4},转换过程如下图所示:
示例1
输入:
{1,3,5},{2,4,6}
复制返回值:
{1,2,3,4,5,6}
collections是一个集合操作工具类,主要实现对集合的操作,其中sort方法是对list集合元素进行排序
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/* 解题思路: new一个组数 来存俩个链表中的数据,然后直接排序
* 最后我们吧数组该成链表就行了
*/
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1==null) return list2;
if(list2==null) return list1;
if(list1==null&&list2==null) return null;
ArrayList<Integer> list=new ArrayList<>();
while(list1!=null){
list.add(list1.val);
list1=list1.next;
}
while(list2!=null){
list.add(list2.val);
list2=list2.next;
}
Collections.sort(list);
ListNode newHead=new ListNode(list.get(0));
ListNode cur=newHead;
for(int i=1;i<list.size();i++){
cur.next=new ListNode(list.get(i));
cur=cur.next;
}
return newHead;
}
}