【链表】328. 奇偶链表

328. 奇偶链表

解题思路

  • 首先判断链表是否为空或者只有一个节点
  • 创建两个链表,分别是奇数链表和偶数链表
  • 然后从将第一个和第二个节点赋值给上面两个链表
  • 从第三个节点开始遍历,分别填充奇数偶数链表
  • 最后连接这两个链表就可以
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    
    
    public ListNode oddEvenList(ListNode head) {
    
    
        // 要求不可以新开辟空间 
        // 没有节点
        if(head == null){
    
    
            return null;
        }
        // 只有一个节点
        if(head.next == null){
    
    
            return head;
        }

        // 创建两个呀节点  分别代表奇偶链表
        ListNode odd = new ListNode(head.val);// 奇数
        ListNode even = new ListNode(head.next.val);// 偶数
        ListNode x = odd;
        ListNode y = even;

        ListNode cur = head.next.next;// 从第三个节点开始
        int count = 2;
        while(cur != null){
    
    
            count++;
            if(count %2 != 0){
    
    
                odd.next = cur;
                odd = odd.next;
            }else{
    
    
                even.next = cur;
                even = even.next;
            }
            cur = cur.next;
        }

        even.next = null;
        odd.next = y;

        return x;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44653420/article/details/131719255
今日推荐