LeetCode—Reorder List
来源:互联网 发布:python 计算macd 编辑:程序博客网 时间:2024/06/07 20:49
Given a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
You must do this in-place without altering the nodes' values.
For example,
Given {1,2,3,4}
, reorder it to {1,4,2,3}
.
想法比较简单
利用快慢两个指针将链表一分为二,针对第二个子链表求倒序,最后将两个子链表合并。
一分为二的方法参考了前面链表排序中用到的归并排序用到的算法
这里代码写得比较长,但是好像在网上也没有找到更好的更简洁的,如果有更好的方法欢迎交流
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:void reorderList(ListNode *head) {if(!head || !head->next){return ;}ListNode * midL = head;ListNode * midR = head;ListNode * midPre = NULL;while(midR && midR->next) //<find the middle point{midR = midR->next->next;midL= midL->next;}ListNode *pre = midL->next;midL->next = NULL;ListNode *pCur = NULL;if (pre) //<reverse the second part of the link{pCur = pre;if(pre->next){pCur = pre->next;pre->next = NULL; //<the last point in the reverse list should point to nullwhile(pCur){ListNode *pNext = pCur->next;if(pNext){pCur->next = pre;pre = pCur;pCur = pNext;}else{pCur->next = pre;break;}}}}ListNode * q = head; //merge the two partwhile(q && pCur){ListNode *tempL = q->next;ListNode *tempR = pCur->next;q->next = pCur;pCur->next = tempL;pCur = tempR;q = tempL;}//return head;}};
0 0
- LeetCode—Reorder List
- LeetCode——Reorder List
- leetcode笔记—Reorder List
- [leetcode][list] Reorder List
- [leetcode][list] Reorder List
- leetcode 143 —— Reorder List
- LeetCode题解——Reorder List
- LeetCode—Reorder List 解题报告
- Leetcode: Reorder List
- [LeetCode] Reorder List
- LeetCode题解:Reorder List
- Leetcode: Reorder List
- LeetCode:Reorder List
- leetcode之Reorder List
- Leetcode: Reorder List
- [LeetCode]Reorder List
- [LeetCode] Reorder List
- leetcode Reorder List
- Linux常用命令(三十) - cal
- Access denied for user 'root'@'localhost'
- Unity3D根据鼠标旋转缓动
- 你需要知道的 16 个 Linux 服务器监控命令
- 比较独到的pca理解
- LeetCode—Reorder List
- duilib库分析: 消息流程分析
- VisualC++ Exception Specifications
- (转)Hive调优实战
- 【安卓笔记】ExpandableListView的使用
- JavaWeb 还是要看老崔的哇 老方讲的太有深度了
- android-annotations使用入门
- 通过ICMP协议测试目标主机是否在线
- ios 真机调试时出现CopyPngFile error解决方法