您的位置:首页 > 编程语言 > Java开发

leetcode----Merge Two Sorted Lists

2014-04-14 21:07 363 查看
此题目验证算法存在问题,因为题目中只是说是按顺序排列的列表,但是默认验证时升序的。

我的代码是:public class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
boolean flag = false;
ListNode ans = l1;
if(l1 == null && l2 == null){
return null;
}
if(l1 != null && l2 == null){
return l1;
}
if(l2 != null && l1 == null){
return l2;
}
if (l1.next != null) {
if (l1.next.val >= l1.val) {
flag = true;
}
}else if(l2.next != null){
if(l2.next.val >= l2.val){
flag = true;
}
}else { // 此处只是为了通过而进行默认升序,如果不是默认的话应该是l1.next = l2;就可以
if(l1.val < l2.val){
l1.next = l2;
return l1;
}else {
l2.next = l1;
return l2;
}
}
if(!flag){
ListNode temp = l1;
if(l1.val <= l2.val){
temp = l1;
l1 = l2;
l2 = temp;
}
ans = l1;
while(l1 != null && l2!= null){
if(l1.val >= l2.val){
temp = l1;
l1= l1.next;
}else {
ListNode temp2 = l2.next;
temp.next = l2;
temp = l2;
l2.next = l1;
l2= temp2;
}
}
if(l1 == null){
temp.next = l2;
}
return ans;
}else {
ListNode temp = l1;
if(l1.val >= l2.val){
temp = l1;
l1= l2;
l2 = temp;
}
ans = l1;
while(l1 != null && l2 != null){
if(l1.val <= l2.val){
temp = l1;
l1 = l1.next;
}else {
ListNode temp2 = l2.next;
temp.next = l2;
temp = l2;
l2.next = l1;
l2= temp2;
}
}
if(l1 == null){
temp.next = l2;
}
return ans;
}
}
}我对顺序进行了验证,,分两种情况,代码有点乱(可以写几个方法单独处理,那样会显得轻松一点)
此题是简单的链表操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息