328. 奇偶链表

2021-06-21 20:28:12 浏览数 (1)

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 示例 1: 输入: 1->2->3->4->5->NULL 输出: 1->3->5->2->4->NULL 示例 2: 输入: 2->1->3->5->6->4->7->NULL 输出: 2->3->6->7->1->5->4->NULL

代码语言:javascript复制
class Solution {
    public ListNode oddEvenList(ListNode head) {
        if(head==null){
            return head;
        }
        /**
        使用亚节点
            定义3个节点 ouHead jiHead ouTail  jiTail
            如果当前是奇数jiTail.next=当前值  否则 ouTail.next=当前值
            遍历完成
                ouTail.next=null
                jiTail.next=jiHead.next
         */

         ListNode ouHead=new ListNode(0);
         ListNode ouTail=ouHead;
         ListNode jiHead=new ListNode(0);
         ListNode jiTail=jiHead;
         boolean isJi=true;//记录是否是奇数

         while(head!=null){
             if(isJi){
              jiTail.next=head;
             jiTail=jiTail.next;
              
             }else{
                 ouTail.next=head;
                 ouTail=ouTail.next;
                
             }
             isJi=!isJi;
              head=head.next;
           
         }
         ouTail.next=null;
         jiTail.next=ouHead.next;
         return jiHead.next;

    }
}

0 人点赞