leetcode 143. Reorder List
来源:互联网 发布:线切割圆弧编程 编辑:程序博客网 时间:2024/06/18 06:17
143. Reorder List
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}
.
(法1)我的思路是每次找最后一个,然后插入到应该的位置,但是这样为o(n^2)。
(法2)还有一个思路是中间分为两节,后一节倒置,然后挨个插入,o(n)。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* Reverse2(ListNode* head) { if(!head) return head; else if(!head->next) return head; else { ListNode* tail=head; ListNode* coming=head->next; while(coming) { tail->next=coming->next; coming->next=head; head=coming; coming=tail->next; } return head; } return head; } void reorderList(ListNode* head) { if(!head) return; ListNode *fast=head; ListNode *slow=head; //将链表拆为两节 while(fast && fast->next) { fast=fast->next->next; slow=slow->next; } fast=slow->next; slow->next=NULL; //转置第二节 fast=Reverse2(fast); //合并 ListNode *p=fast; ListNode *q=head; while(fast && q) { p=fast; fast=fast->next; p->next=q->next; q->next=p; q=p->next; } }};
阅读全文
0 0
- [LeetCode]143.Reorder List
- LeetCode 143. Reorder List
- [leetcode] 143.Reorder List
- leetcode 143. Reorder List
- 143. Reorder List LeetCode
- LeetCode 143. Reorder List
- LeetCode 143. Reorder List
- LeetCode 143. Reorder List
- LeetCode *** 143. Reorder List
- [Leetcode] 143. Reorder List
- leetcode.143. Reorder List
- LeetCode 143. Reorder List
- LeetCode-143.Reorder List
- LeetCode - 143. Reorder List
- LeetCode 143. Reorder List
- leetcode 143. Reorder List
- Leetcode 143. Reorder List
- [LeetCode] 143. Reorder List
- html的学习
- Hive2.0中HiveServer2的WEB UI界面
- abap学习笔记-SAP abap简介
- 漫画:什么是ConcurrentHashMap?
- 升级Gradle4.1出现NoClassDefFoundError
- leetcode 143. Reorder List
- springboot用thymeleaf模板的paginate分页完整代码
- 单链表的创建方式
- mybitis注解开发_curd操作
- Hibernate-struts 项目中Session的管理
- css悬浮在页面顶端
- 机器学习算法之线性模型
- 整理Sqlite数据库部分语句
- 本地音乐播放器 “陌上聆听”