Reorder List 微软2014校园招聘笔试题
来源:互联网 发布:网络小贷和p2p的区别 编辑:程序博客网 时间:2024/06/03 10:10
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}
.
这个题是微软2014校园招聘笔试题,也是leetcode 一道经典题。这篇博文我用一个很笨的方法实现了这道题:
http://blog.csdn.net/huruzun/article/details/28456403
今天再次碰到这个题尝试用更好的方法进行实现,算法思想:把链表分为两部分,后面部分进行链表逆置,然后进行两个链表合并。
public class Solution { public void reorderList(ListNode head) {if(head==null || head.next==null){return ;}ListNode slow = head;ListNode fast = head;// fast slow 步伐不同链表分为前后两部分while(fast!=null && fast.next!=null){slow = slow.next;fast = fast.next.next;}ListNode reverseListNode = reverse(slow.next);slow.next = null;ListNode cur = head;// 合并前后两条链表while(reverseListNode!=null){ListNode temp = reverseListNode.next;reverseListNode.next = cur.next;cur.next = reverseListNode;cur = cur.next.next;reverseListNode = temp;}}public ListNode reverse(ListNode head){if(head == null || head.next ==null){return head;}ListNode pre = null;ListNode cur = head;ListNode next = null;while(cur!=null){next = cur.next;cur.next = pre;pre = cur;cur = next;}return pre;}}
0 0
- Reorder List 微软2014校园招聘笔试题
- 2014年微软校园招聘笔试题最后编程题Reorder List
- 微软2014校园招聘笔试题
- 微软2014校园招聘笔试题
- 微软2014校园招聘笔试编程题
- 微软校园招聘笔试题
- 微软校园招聘笔试题
- 微软校园招聘笔试题
- 微软校园招聘笔试题
- [历年IT笔试题]2014微软校园招聘笔试试题
- 2014年腾讯,百度,微软等校园招聘笔试题...
- 微软2014校园招聘笔试试题
- 微软2014校园招聘笔试试题
- 微软2014校园招聘笔试试题
- [转]微软2014校园招聘笔试试题
- 微软2014校园招聘笔试试题
- 2013年微软校园招聘笔试题
- 2013年微软校园招聘笔试题
- couchbase view必读
- 2013 excel 版(安装Excel link插件,实现Excel与Matlab的互联 )
- Java设计模式之适配器模式
- 给含有空值的列创建虚拟索引
- 互联网12个创业派系500强,你认识多少?
- Reorder List 微软2014校园招聘笔试题
- Android实现数据存储技术
- chapter2字符串
- Collection List Set Map 区别记忆
- ffmpeg+sdl编程----给ffmpeg加入左右声道切换功能(原创)
- Jenkins在.Net平台配置之代码测试
- 创业者一生要扮演的四个角色:诗人、科学家、记者、拳击手
- 剑指offer 面试题20 顺时针打印矩阵
- MYSQL 从入门到精通