LeetCode 0021
来源:互联网 发布:sql server 2008 激活 编辑:程序博客网 时间:2024/05/21 11:24
21.Merge Two Sorted Lists
原题链接
我的思路:
显然这条题目里所说的已经排好序,是基于这么一个假设:两个list都是按值从小到大排序的。没有出现我们之前C++作业那种,有3种可能:
- 两个都是从小到大排序
- 两个都是从大到小排序
- 一个是从小到大排序,另一个是从大到小排序
我已经不记得当时要求返回值的顺序是什么样子了。
我先假设是要求从小到大排序。那么从作业转换到这条题目,只需要将从大到小排序的list转换成从小到大的就行。也就是这里需要一个reverse函数。
再假设按照第1个list的顺序拼接,那么也好办,先找出第1个list的排序方案,然后按照之前假设的从小到大排序返回的做法做,只需要在最后那里加上按第1个list排序,也就是看情况调用或者不调用reverse函数。
对于这条题目,我用的是非递归的做法,在做的过程中,需要注意的一个点是,这里没有办法申请一个空的节点,所以需要申请一个头结点作为辅助。另外,为了返回值,需要一个辅助指针。只能说,手撕链表还是很难受的,STL很好用。
我的代码:
丑,请轻喷
/** * 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* result = new ListNode(0); ListNode* helper = result; while(l1 && l2) { if(l1->val < l2->val) { helper->next = l1; l1 = l1->next; } else { helper->next = l2; l2 = l2->next; } helper = helper->next; } helper->next = l1 ? l1 : l2; return result->next; }};
阅读全文
0 0
- LeetCode 0021
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- 无联网条件下的Docker部署
- python生成日历
- EasyUI datagrid 动态加载表格数据的方式
- 移动端 隐藏滚动条
- NSIS添加系统环境变量的方法
- LeetCode 0021
- android 休眠锁
- a picture
- Tensorflow中级教程——用于Mnist的CNN
- 定期清理oracle审计日志
- 高性能HTML
- 为同一界面建立多个layout分辨率布局文件
- javaScript DOM编程艺术读书笔记
- Android Studio mac 虚拟机无法读写遇到的坑