LintCode 合并两个排序链表
来源:互联网 发布:win10安装tensorflow 编辑:程序博客网 时间:2024/05/24 06:49
题目
将两个排序链表合并为一个新的排序链表样例给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。
//Definition for ListNode. public class ListNode { int val; ListNode next; ListNode(int val) { this.val = val; this.next = null; } }
思路
- 如果两个链表任一为空,则返回另一个。如果都为空,直接返回空。
- 定义一个新链表,用于存储合并后的链表。
- 比较两个链表,把其中链表值较小的存入新链表中,链表后移。
- 如果其中一个链表已经移到到链表末尾,则将另一个链表剩余的部分直接存储到新链表。
- 返回新链表。
- 因为本题没有时间与空间限制,所以递归与非递归都可以顺利通过。
递归实现
//递归 public ListNode mergeTwoLists1(ListNode l1, ListNode l2) { if (l1 == null) return l2; if (l2 == null) return l1; //新链表,记录合并 ListNode node = null; //比较链表值 if (l1.val < l2.val) { //存储较小的 node = l1; //递归,移动指针 node.next = mergeTwoLists(l1.next, l2); } else { //存储较小的 node = l2; //递归,移动指针 node.next = mergeTwoLists(l1, l2.next); } return node; }
非递归
//非递归,占用内存小 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if (l1 == null) return l2; if (l2 == null) return l1; //记录合并链表,初始化 ListNode newNode = new ListNode(-1); //合并链表的指针 ListNode node = newNode; while (l1 != null && l2 != null) { //比较链表值,存储较小的,然后移动指针 if (l1.val < l2.val) { node.next = l1; l1 = l1.next; } else { node.next = l2; l2 = l2.next; } // 将指针移动到合并后链表的结尾 node = node.next; } // 如果第一个链表的元素未处理完,将其接到合并链表的最后一个结点之后 if (l1 != null) { node.next = l1; } // 如果第二个链表的元素未处理完,将其接到合并链表的最后一个结点之后 if (l2 != null) { node.next = l2; } return newNode.next; }
阅读全文
0 0
- LintCode 合并两个排序链表
- LintCode 合并两个排序链表
- LintCode -合并两个排序链表
- lintcode-合并两个排序链表 -165
- 合并两个排序链表(LintCode)
- LintCode:合并两个排序链表
- Lintcode 合并两个排序的链表
- lintcode ----合并两个排序链表
- lintcode,合并两个排序链表
- LintCode 合并两个排序链表
- 合并两个排序链表-LintCode
- lintcode 165 合并两个排序链表
- LintCode : 合并两个排序链表
- [LintCode]165.合并两个排序链表
- LintCode 165合并两个排序链表
- lintcode-合并两个排序链表
- 合并两个排序链表-LintCode
- LintCode 合并两个排序链表
- 高精度板(压4位)
- 互联网应用开发技术的发展对网游的影响
- Flutter实战一Flutter聊天应用(二十)
- 获取模块路径
- jquery可见性过滤选择器:hidden、:visible
- LintCode 合并两个排序链表
- Android Service,AlarmManager组合实现定时任务踩的坑
- 【Python】Python3 List remove()方法
- winform多线程
- windows平台使用eclipse搭建android开发环境
- JavaWeb——文件上传和下载
- IAR 编译不过performing Post-Build Action的问题
- 并发编程1:全面认识 Thread
- Python Numpy的数组array和矩阵matrix