143. Reorder List

这题很简单,不过很容易出bug
特别在merge的时候,所以一定要逻辑清楚,
先写好框架

class Solution {
    public void reorderList(ListNode head) {
        if (head == null) return ;
       
        ListNode slow = head, fast = head;
        while (fast.next != null && fast.next.next != null) {
            fast = fast.next.next;
            slow = slow.next;
        }
        ListNode head2 = slow.next;
        slow.next = null;
        
        head2 = reverse(head2);
        
        //merge
        
        ListNode cur = new ListNode(0);
        while (head != null) {
            cur.next = head;
            head = head.next;
            cur = cur.next;
            cur.next = null;
            
            if (head2 == null) break;
            cur.next = head2;
            cur = cur.next;
            head2 = head2.next;
            cur.next = null;
        }
    }
    private ListNode reverse(ListNode node) {
        if (node == null) return null;
        ListNode prev = null;
        while (node != null) {
            ListNode next = node.next;
            node.next = prev;
            prev = node;
            node = next;
        }
        return prev;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。