题目是:归并两个已排好序的链表,假设链表是从小到大递增排序的
算法思路就是:我的解法就是重新建立一个新的链表,将归并好的存放进去,一共有三种情况,假设俩个链表为链表l1和链表l2
1、第一种情况就是l1和l2同时不为空
2、l1为空,l2不为空
3、l1不为空,l2为空
针对第一种情况,还存在两中考虑,如果1的值小于2的值则将1的值存入新建链表内,如果2的值小于1的值则将2的值存入到新建链表内
针对第2种情况,新建的链表就是对链表2的复制
针对第三种情况,新建的链表就是对链表1的复制
该方法的优点就是时间短但是耗费的空间多。
具体代码如下:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode newNode=new ListNode(0);
ListNode p=newNode;
while(l1!=null&&l2!=null){
if(l1.val<l2.val){
ListNode a=new ListNode(l1.val);
p.next=a;
p=a;
l1=l1.next;
}
else{
ListNode b=new ListNode(l2.val);
p.next=b;
p=b;
l2=l2.next;
}
}
if(l1==null){
while(l2!=null){
ListNode c=new ListNode(l2.val);
p.next=c;
p=c;
l2=l2.next;
}
}
else{
while(l1!=null){
ListNode d=new ListNode(l1.val);
p.next=d;
p=d;
l1=l1.next;
}
}
return newNode.next;
}
}