LeetCode 21 Merge Two Sorted Lists
来源:互联网 发布:mysql 获取字符串下标 编辑:程序博客网 时间:2024/06/05 08:33
Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
解题思路:这道题很容易,合并两个链表,并按升序排序,我想到一个以空间换时间的方案,单独的链表操作去实现比较麻烦,要考虑边界条件,于是我想到直接将两个链表合并,然后提出数据进行排序,然后赋值给链表。Accepted后发现,效率还不错。当然对于某些极端的内存环境的时候,这个方案不可取。
代码如下:
public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1==null&&l2!=null){ return l2; } if(l1!=null&&l2==null){ return l1; } if(l1 == null&&l2==null){ return null; } ListNode temp = l1;// while(temp.next!=null){ temp=temp.next; } temp.next = l2; ListNode temp3 = l1; int []vals=new int[1000]; int index=0; while(temp3!=null){ vals[index++]=temp3.val; temp3 =temp3.next; } Arrays.sort(vals, 0, index); ListNode temp1 = new ListNode(-1);// l1 l2 首尾相连 然后冒泡 ListNode t1 = temp1; int i =0; while(i!=index){ temp1.val = vals[i++]; if(i!=index){ temp1.next = new ListNode(0); } temp1 = temp1.next; } return t1; }这有一个传统的做法,放上来供学习。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { ListNode *dummyHead=new ListNode(0); ListNode *p=dummyHead; while(l1!=NULL&&l2!=NULL) { if(l1->val<l2->val) { p->next=l1; l1=l1->next; p=p->next; } else { p->next=l2; l2=l2->next; p=p->next; } } if(l1!=NULL) p->next=l1; else p->next=l2; p=dummyHead->next; delete dummyHead; return p; }};
0 0
- LeetCode(21)Merge Two Sorted Lists
- [LeetCode 21] Merge Two Sorted Lists Solution
- [leetcode 21] Merge Two Sorted Lists
- LeetCode 21:Merge Two Sorted Lists
- LeetCode | #21 Merge Two Sorted Lists
- [Leetcode] 21 - Merge Two Sorted Lists
- leetcode.21------------Merge Two Sorted Lists
- [leetcode]21 Merge Two Sorted Lists
- Leetcode NO.21 Merge Two Sorted Lists
- leetcode[21 链表]Merge Two Sorted Lists
- leetcode-21 Merge Two Sorted Lists
- leetCode #21 Merge Two Sorted Lists
- leetcode 21 Merge Two Sorted Lists
- [Leetcode 21, Easy] Merge Two Sorted Lists
- LeetCode 21 Merge Two Sorted Lists
- Leetcode 21 Merge Two Sorted Lists
- 【leetcode】【单链表】【21】Merge Two Sorted Lists
- LeetCode 21 - Merge Two Sorted Lists
- nginx高级数据结构源码分析(一)-----双向链表
- HDOJ 1048 The Hardest Problem Ever
- I/O多路复用详解(二)
- VS使用Xamarin连接不上Genymotion的Android模拟器的原因
- 一维的树状数组
- LeetCode 21 Merge Two Sorted Lists
- 剑指Offer面试题42(Java版):反转单词顺序VS左旋转字符串
- 二维树状数组
- JAVA 基础 (数组)
- 《机器学习系统设计》之k-近邻分类算法
- 黑马程序员-----Java基础-----构造函数
- 纵向滚动条,clientHeight, offsetHeight
- Cocos2d-js 3.0 屏幕适配方案 分辨率适应
- LeetCode Find Minimum in Rotated Sorted Array系列