leetcode_143_Reorder List
来源:互联网 发布:格罗兹尼巷战 知乎 编辑:程序博客网 时间:2024/05/29 13:26
描述:
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.求出链表的长度
2.将后半部分结点依次入栈
3.将栈里的元素依次插入到前面的结点后面
代码:
public void reorderList(ListNode head) { if(head==null||head.next==null) return; ListNode pListNode=head,tempListNode=null; Stack<ListNode>stack=new Stack<ListNode>(); int count=0,i=0; while(pListNode!=null) { count++; pListNode=pListNode.next; } int subLen=count/2+1; pListNode=head; for(i=1;i<subLen;i++) pListNode=pListNode.next; tempListNode=pListNode.next; pListNode.next=null; while(tempListNode!=null) { stack.push(tempListNode); tempListNode=tempListNode.next; } pListNode=head; while(!stack.empty()) { tempListNode=stack.peek(); stack.pop(); tempListNode.next=pListNode.next; pListNode.next=tempListNode; pListNode=tempListNode.next; } }
结果:
0 0
- leetcode_143_Reorder List
- leetcode_143_Reorder List
- List
- list
- List
- LIST
- list
- list
- List
- list
- list
- List
- list
- LIST
- List
- List
- List
- list
- odoo8下新增时初始化明细项目的新增
- POJ 3468 A Simple Problem with Integers(线段树成段更新)
- Codeforces Round #290 (Div. 2)D - Fox And Jumping——数论gcd=1
- 《HTTP权威指南》读书笔记(1)-HTTP简介与消息结构
- [UVA10245] The Closest Pair Problem && 暴力版本
- leetcode_143_Reorder List
- iOS开发/设计面试题汇总
- WebView基本使用
- 关系型数据库与NOSQL数据库的区别
- 在PHPStorm中调试PHP代码
- Keepalived+nginx实现双主高可用负载均衡
- 三步解决Android Studio启动一直在Fetching的问题
- CSDN-markdown编辑器
- 配置Spring的OpenSessionInViewFilter过滤器,以解决Hibernate的懒加载异常(LazyInitializationException)