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;
}
}
}我对顺序进行了验证,,分两种情况,代码有点乱(可以写几个方法单独处理,那样会显得轻松一点)
此题是简单的链表操作
我的代码是: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;
}
}
}我对顺序进行了验证,,分两种情况,代码有点乱(可以写几个方法单独处理,那样会显得轻松一点)
此题是简单的链表操作
相关文章推荐
- [LeetCode]Merge Two Sorted Lists
- leetcode--Merge Two Sorted Lists
- leetcode Merge Two Sorted Lists(Java)
- leetcode第21题-Merge Two Sorted Lists
- [LeetCode] 021. Merge Two Sorted Lists (Easy) (C++/Python)
- LeetCode — Merge Two Sorted Lists
- [leetcode] Merge Two Sorted Lists
- LeetCode(21)——Merge Two Sorted Lists
- [LeetCode 21]Merge Two Sorted Lists 合并两个有序链表
- Leetcode 21 Merge Two Sorted Lists
- LeetCode--------Merge Two Sorted Lists
- LeetCode Merge Two Sorted Lists
- LeetCode-Merge Two Sorted Lists
- LeetCode之Merge Two Sorted Lists
- leetcode-Merge Two Sorted Lists
- 【Leetcode】【python】Merge Two Sorted Lists
- 【leetcode题解】【E】【97】Merge Two Sorted Lists
- LeetCode题解-21-Merge Two Sorted Lists
- LeetCode – Refresh – Merge Two Sorted Lists
- LeetCode-Easy刷题(6) Merge Two Sorted Lists