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