LeetCode 21.Merge Two Sorted Lists
来源:互联网 发布:java接口特点是什么 编辑:程序博客网 时间:2024/06/06 20:38
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.
链表数据域顺序是由小到大的,因此当l1**当前节点的值大于l2当前节点**的值时,我们取的是l2这个较小的值,并将l2的下一个节点的值和l1当前节点的值放到下一次做对比,依次递归下去。
一般解法:
ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { ListNode *head = new ListNode(0), *p = head; while (l1&&l2) { if (l1->val > l2->val) { p->next = l2; l2 = l2->next; } else { p->next = l1; l1 = l1->next; } p = p->next; } p->next = (l1 == NULL) ? l2 : l1; return head->next; }
这种写法其实不太好,会破环原链表的结构。
然后在discuss里看到一种优雅的递归写法:
https://leetcode.com/problems/merge-two-sorted-lists/discuss/
ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { if (!l1) return l2; if (!l2) return l1; if (l1->val < l2->val) { l1->next = mergeTwoLists(l1->next, l2); return l1; } else { l2->next = mergeTwoLists(l1, l2->next); return l2; } }
阅读全文
0 0
- 21. Merge Two Sorted Lists leetcode(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】21. Merge Two Sorted Lists
- [leetcode] 21.Merge Two Sorted Lists
- [leetcode] 21.Merge Two Sorted Lists
- [leetcode] 21. Merge Two Sorted Lists
- <LeetCode OJ> 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists LeetCode
- leetcode 21. Merge Two Sorted Lists
- Leetcode:21. Merge Two Sorted Lists(JAVA)
- Leetcode ☞ 21. Merge Two Sorted Lists
- LeetCode 21. Merge Two Sorted Lists
- [LeetCode]21. Merge Two Sorted Lists
- 【LeetCode】21. Merge Two Sorted Lists
- HTTPS笔记
- 详细介绍VO和PO的区别
- C# 泛型的协变和逆变
- 获取指定(当前)月的天数。时间工具类 DateUtil
- CSS3 box-sizing 属性
- LeetCode 21.Merge Two Sorted Lists
- 【我的Java笔记】增强for循环 & ArrayList集合储存自定义对象并遍历的五种方法
- ubuntu 安装repo
- OpenCV自学笔记32. ubuntu 安装python3+opencv3的过程记录
- 11.14第十节课
- LeetCode 24.Swap Nodes in Pairs
- 欢迎使用CSDN-markdown编辑器
- Android Camera 系统架构源码分析(2)---->Camera的startPreview和setPreviewCallback
- eslint 规则