您的位置:首页 > 其它

LeetCode Reorder List

2014-08-28 16:50 183 查看
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}
.

/**
* 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) {
LinkedList<ListNode> list = new LinkedList<>();
ListNode temp=head;
//        list.addLast(temp);
boolean flag=false;
while (temp.next!=null) {
list.addLast(temp.next);
temp=temp.next;
}
temp=head;
while (!list.isEmpty()) {
if (flag) {
temp.next=list.pollFirst();
flag=false;
}else {
temp.next=list.pollLast();
flag=true;
}
temp=temp.next;
}
temp.next=null;

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: