题解 | #重排链表#

重排链表

https://www.nowcoder.com/practice/3d281dc0b3704347846a110bf561ef6b

import java.util.*;
/**
 * 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 || head.next == null)
        {
            return;
        }
        int count = 0;
        ListNode cur = head;
        Deque<ListNode> stack  = new LinkedList<>();
        Deque<ListNode> queue = new LinkedList<>();
        while(cur != null)
        {   
           queue.add(cur);
           stack.push(cur);

            cur = cur.next;
            count++;
        }
        ListNode tmp = head;
        int flag = 0;
        int COUNT = 1;
        while(true)
        {
            if(flag == 0)
            {
                queue.poll().next = stack.peek();
                COUNT++;
                flag = 1;
            }
            else{
                stack.pop().next = queue.peek();
                flag = 0;
                COUNT++;
            }
            if(COUNT == count)
            {   
                if(COUNT % 2 ==1)
                {
                    stack.peek().next = null;
                }
                else{
                    queue.peek().next = null;
                }
                break;
            }
        }
    }
}

全部评论

相关推荐

服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
程序员猪皮:看不到八股什么意思
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务