leetcode: Reorder List
来源:互联网 发布:linux操作系统源码 编辑:程序博客网 时间:2024/05/16 18:49
问题的难点在于链表是单向的...因而我们可以把后一半的链表倒序再插入前一半中...
利用快慢指针找到链表的中点并利用两个指针将后一半链表颠倒...
插入的时候按次将点到后的后一半节点插入到前一般中即可.....
需要注意的是在颠倒和插入节点的时候,最好使用新的对象来避免之后变量改变导致之前也受影响....还是需要细心,多考虑可能出现的边界情况
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public void reorderList(ListNode head) { if(head == null) { return ; } ListNode slow = head; ListNode fast = head; int len=1; while(fast.next!=null&&fast.next.next!=null) { slow = slow.next; fast = fast.next.next; len++; } if(len==1) { return ; } ListNode half_start = slow.next; ListNode bef = null; while(half_start!=null) { ListNode now = new ListNode(half_start.val); half_start = half_start.next; now.next = bef; bef = now; } ListNode res = head; while(len>0) { len = len-1; ListNode tmp = res.next; if(bef==null) { res.next = null; break; } else { res.next = new ListNode(bef.val); res = res.next; bef = bef.next; } if(len!=0) { res.next = tmp; res = res.next; } } return ; }}
0 0
- [leetcode][list] Reorder List
- [leetcode][list] 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
- LeetCode 之 Reorder List
- Leetcode: Reorder List
- LeetCode OJ:Reorder List
- Reorder List (LeetCode)
- 算法排序之最常用的排序--快速排序(Quick Sort)
- poj题目分类
- 黑马程序员_JAVA学习之概述
- 进程间通信_05消息队列
- Mina架构的异常问题......
- leetcode: Reorder List
- 阿里巴巴上市 全球第四,互联网第二
- 【Python Challenge-8】integrity
- 2014年acm-icpc广州regional网络赛经历
- NYOJ-a letter and a number
- 小球在屏幕上随机移动
- LVM 逻辑卷管理
- linux 管道通信
- 黑马程序员————JAVA之交通灯管理系统