题解 | 链表的奇偶重排

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    public ListNode oddEvenList (ListNode head) {
        if(head == null || head.next == null) {
            return head;
        }
	  	/**
		* 解体思路:
		* 1、遍历整个队列,提取出所有的偶数节点放入到list中
		* 2、遍历的同时,剔除掉偶数节点,也就是把所有的奇数节点组装起来
		* 3、把偶数节点追加到奇数节点后面
		* 4、最后一步,不要忘了把最后一个节点的next置为null
		*
		*/
        List<ListNode> list = new ArrayList<>();
        ListNode result = head;
        ListNode temp = head;
        boolean flag = false;
        while(temp != null) {
            if(flag) {
                list.add(temp);
                if(temp.next!= null) {
                    result.next = temp.next;
                    result = result.next;
                }
            }
            temp = temp.next;
            flag = !flag;
        }
        for(ListNode node : list) {
            result.next = node;
            result = node;
        }
        result.next = null;
        return head;
    }
}

全部评论

相关推荐

程序员小白条:一般不用左右的模块,自我评价没啥用,这个简历纯前端,然后全是CRUD,说实话我这个后端全能做
点赞 评论 收藏
分享
05-16 21:54
已编辑
门头沟学院 前端工程师
蓝曦111:我也是25届,这是第二次被裁了,毕业没到一年就失业两次,两次都是公司问题。第一家才转正一个月,跟我说公司拿不到项目结款没办法,赔了一个月;第二个公司连工资都发不出来了,赔偿更别想了,我算是认命了,这条路也不知道能走多远走多久,不过生活还是要继续的,走一步看一步吧
当你面对裁员会如何?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务