描述
给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。
注意是节点的编号而非节点的数值。
数据范围:节点数量满足 0 \le n \le 10^50≤n≤105,节点中的值都满足 0 \le val \le 10000≤val≤1000
要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode oddEvenList (ListNode head) {
if(head ==null|| head.next==null){
return head;
}
ListNode res =new ListNode(0);
ListNode p= res ;
ListNode p1= head;
ListNode p2 =head;
int count =1;
while( p1!=null){
if ((count &1)==1){
p.next =new ListNode(p1.val);
p=p.next;
}
p1=p1.next;
count++;
}
count =1;
while(p2!=null){
if((count &1)==0){
p.next =new ListNode(p2.val);
p=p.next;
}
p2 =p2.next;
count++;
}
return res.next;
}
}