题解 | 链表的奇偶重排

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;
    }
}

全部评论

相关推荐

门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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