Leetcode ☞ 143. Reorder List
来源:互联网 发布:如何清理mac桌面图标 编辑:程序博客网 时间:2024/05/22 17:23
Total Accepted: 60546 Total Submissions: 270201 Difficulty: Medium
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}
.
我的AC:(16ms,最快一批)
struct ListNode* reverseList(struct ListNode* head){ if(!head || !head->next) return head; struct ListNode *p, *p1, *p2; p2 = head; p1 = NULL; while(p2){ p = p2->next; p2->next = p1; p1 = p2; p2 = p; } return p1;}void reorderList(struct ListNode* head) { if(!head || !head->next) return; struct ListNode *fast, *slow, *secondPartHead; fast = slow = head; while(fast->next && fast->next->next){ fast = fast->next->next; slow = slow->next; } secondPartHead = slow->next; slow->next = NULL; secondPartHead = reverseList(secondPartHead); struct ListNode *firstcurr = head; struct ListNode *secondcurr = secondPartHead; struct ListNode *p1, *p2; while(firstcurr && secondcurr){ p1 = firstcurr->next; p2 = secondcurr->next; firstcurr->next = secondcurr; secondcurr->next = p1; firstcurr = p1; secondcurr = p2; }}
思路:
快慢指针找中位数-->剪掉后半部-->反转后半部-->合并
注意:
1、reorderList函数类型是void。
2、最后的循环条件while(firstcurr && secondcurr【一开始落了】)。
例子:
【1,2,3,4,5,6】-->【1,2,3】和【6,5,4】-->【1,6,2,5,3,null】,【4,null】。最后一步:把4插到了3跟null中间,firstcurr 和secondcurr都是NULL。
【1,2,3,4,5,6,7】-->【1,2,3,4】和【7,6,5】-->【1,7,2,6,3,4,null】,【5,null】。最后一步:把5插到了3跟4中间,secondcurr为NULL,而firstcurr不是NULL!
所以循环条件写成while(secondcurr)即可。
0 0
- Leetcode ☞ 143. Reorder List
- [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
- [volley文件上传]Android中自定义MultipartEntity实现文件上传以及使用Volley库实现文件上传
- 岗位-<iOS开发工程师>-总结
- 第2周项目 求π
- springMVC中复杂嵌套对象、List等集合类型数据绑定
- Application Loader下载安装和上传app程序
- Leetcode ☞ 143. Reorder List
- Learn Some Framework-5 ActivityManagerService[Initialize]
- 监听未接来电,自动回复短信
- storm 文档(1)----文档主页
- 浅谈spring框架中集成国际化+velocity
- 2. Add Two Numbers
- hdu 4090(搜索+可行性剪枝)
- IOS 30多个iOS常用动画,带详细注释
- R语言画图功能到底有多厉害,看看就知道了