reorder-list(Leetcode)

原创 2016年05月31日 16:48:21

题目描述

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}.
根据提议,可以将问题分解为一下几个步骤解决。

  • 找到链表的中间结点
  • 将链表的后半部分反转(中间结点之后的部分)
  • 将链表的前半部分和后半部分进行重排
package sxd.learn.java.leetcode;

/**
 * 
 * @author lab
 * 2016/5/30
 * linked-list-cycle-ii
 * Given a linked list, return the node where the cycle begins. If there is no cycle, return null. 
 */
public class Leetcode9 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ListNode node1 = new ListNode(1);
        ListNode node2 = new ListNode(2);
        ListNode node3 = new ListNode(3);
        ListNode node4 = new ListNode(4);
        ListNode node5 = new ListNode(5);
        ListNode node6 = new ListNode(6);

        node1.next = node2;
        node2.next = node3;
        node3.next = node4;
        node4.next = node5;
        node5.next = node6;
        node6.next = node3;

        System.out.println(detectCycle(node1).val);
    }

    public static ListNode detectCycle(ListNode head) {
        if(head == null)
            return null;
        ListNode fast = head;
        ListNode slow = head;

        boolean isCycle = false;

        while(fast.next != null && fast.next.next != null){
            fast = fast.next.next;
            slow = slow.next; 
            if(slow.equals(fast)){
                isCycle = true;
                break;
            }
        }

        if(isCycle){
            fast = head;
            while(!fast.equals(slow)){
                fast = fast.next;
                slow = slow.next;
            }
            return fast;
        }else{
            return null;
        }

    }
}

LeetCode(143)Reorder List

题目如下: Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must...
  • feliciafay
  • feliciafay
  • 2014年02月01日 07:58
  • 1645

Leetcode: reorder-list

题目: Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… Y...
  • weixin_37933986
  • weixin_37933986
  • 2017年05月24日 10:41
  • 111

LeetCode-143. Reorder List (JAVA)重排链表

LeetCode-143. Reorder List (JAVA)重排链表
  • mine_song
  • mine_song
  • 2017年05月12日 20:34
  • 628

leetcode reorder-list

链表的重排序 问题描述: Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… ...
  • ych_ding
  • ych_ding
  • 2014年11月26日 22:19
  • 331

leetcode之reorder-list

题目描述Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must...
  • ivolcano
  • ivolcano
  • 2017年03月04日 16:13
  • 151

Leetcode在线编程reorder-list

Leetcode在线编程reorder-list 快慢指针找链表中点,链表反转
  • zero_witty
  • zero_witty
  • 2016年12月03日 00:31
  • 151

leetcode reorder-list(java实现)

原题: Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… Y...
  • fyy607
  • fyy607
  • 2017年02月01日 20:21
  • 68

Leetcode之reorder-list

问题描述: Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You m...
  • zjwcdd
  • zjwcdd
  • 2016年05月26日 22:10
  • 174

【reorder-list】

Given a singly linked list L: L 0→L 1→…→L n-1→L n, reorder it to: L 0→L n →L 1→L n-1→L2→L n-2→… ...
  • lplp90908
  • lplp90908
  • 2017年09月02日 10:17
  • 57

reorder-list

中等 重排链表 查看运行结果  24% 通过 给定一个单链表L: L0→L1→…→Ln-1→Ln, 重新排列后为:L0→Ln→L1→Ln-1→L2→Ln-2→...
  • poiop221
  • poiop221
  • 2015年06月26日 10:31
  • 185
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:reorder-list(Leetcode)
举报原因:
原因补充:

(最多只允许输入30个字)