题解 | #链表的奇偶重排#

链表的奇偶重排

https://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3

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

        int count = 1;

        ListNode oddNode = new ListNode(0);
        ListNode oddFollow = oddNode; 
        ListNode evenNode = new ListNode(0);
        ListNode evenFollow = evenNode;

        while(head != null){
            if((count % 2) == 1){
                oddFollow.next = head;
                oddFollow = oddFollow.next;
            }else{
                evenFollow.next = head;
                evenFollow = evenFollow.next;
            }
            head = head.next;
            count++;
        }

        // 由于偶数在后面,无next对象,这里需要创建一个null,否则报错
        evenFollow.next = null;

        // 奇数链表后跟偶数链表
        oddFollow.next = evenNode.next;

        return oddNode.next;

    }
}

全部评论

相关推荐

11-08 17:36
诺瓦科技_HR
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务