zoukankan      html  css  js  c++  java
  • LeetCode:144 重排链表(反转+快慢指针)

    class Solution {
    
    
        public ListNode Find(ListNode head){
            ListNode slow = head;
            ListNode quick = head;
            while(slow!=null&&quick!=null){
                if(quick.next!=null)
                    quick=quick.next.next;
                else{
                    break;
                }
                 slow=slow.next;
            }
            ListNode a = slow.next;
            slow.next = null;
            return a;
        }
    
        public void Reverse(ListNode t,ListNode d){
            while(d!=null){
                ListNode a = d;
                d = d.next;
                a.next = t.next;
                t.next = a;
                //d = d.next;
            }
            
            return;
        }
    
        public void reorderList(ListNode head) {
    
            if(head==null){
                return;
            }
    
            ListNode mid = Find(head);
            ListNode t = new ListNode(0,null);
            Reverse(t,mid);
            ListNode res = head;
            t=t.next;
           
            while(res!=null&&t!=null){
                ListNode tmp = t;
                t=t.next;
                tmp.next=res.next;
                res.next = tmp;
                if(res.next!=null)
                    res = res.next.next;
                else{
                    return;
                }
            }
        }
    }
  • 相关阅读:
    JUnit4.13环境配置
    OO第5-7次作业总结
    电梯的一点浅优化
    C++变量作用域、生存期、存储类别
    最后一次OO博客
    OO第三次总结
    OO第二次总结
    OO第一次总结
    POJ3934
    POJ刷题计划
  • 原文地址:https://www.cnblogs.com/dloooooo/p/13769386.html
Copyright © 2011-2022 走看看