/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode aimedNode = new ListNode();
ListNode head = aimedNode;
ListNode head1 = list1;
ListNode head2 = list2;
/*
if(list1!=null)
{
head1 = list1;
}
else if(list2 != null)
{
aimedNode = list2;
return aimedNode;
}
if(list2!=null){
head2 = list2;
return aimedNode;
}else if(list1 != null)
{
return list1;
}
if(list1 == null && list2 ==null)
{
return null;
}
*/
int length1 = 0;
int length2 = 0;
while(head1 != null)
{
length1++;
head1 = head1.next;
}
while(head2 != null)
{
length2++;
head2 = head2.next;
}
if(length1 == 0&&length2 != 0)
{
return list2;
}
else if(length2 == 0&&length1 != 0)
{
return list1;
}
else if(length1 ==0 &&length2 ==0)
{
return null;
}
else{
if(length1 <= length2)
{
while(list1 != null&&list2 != null)
{
if(list1.val <= list2.val)
{
head.next = new ListNode(list1.val);
head = head.next;
list1 = list1.next;
}
else{
head.next = new ListNode(list2.val);
head = head.next;
list2 = list2.next;
}
}
while(list2 != null)
{
head.next = new ListNode(list2.val);
head = head.next;
list2 = list2.next;
}
while(list1 != null)
{
head.next = new ListNode(list1.val);
head = head.next;
list1 = list1.next;
}
}else
{
while(list2 != null&&list1 != null)
{
if(list1.val <= list2.val)
{
head.next = new ListNode(list1.val);
head = head.next;
list1 = list1.next;
}
else{
head.next = new ListNode(list2.val);
head = head.next;
list2 = list2.next;
}
}
while(list2 != null)
{
head.next = new ListNode(list2.val);
head = head.next;
list2 = list2.next;
}
while(list1 != null)
{
head.next = new ListNode(list1.val);
head = head.next;
list1 = list1.next;
}
}
return aimedNode.next;
}
}
}
先暴力解决了,有时间再优化