描述
给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。
注意是节点的编号而非节点的数值。
数据范围:节点数量满足 0 \le n \le 10^50≤n≤105,节点中的值都满足 0 \le val \le 10000≤val≤1000
要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)
输入:
{1,2,3,4,5,6}返回值:
{1,3,5,2,4,6}说明:
1->2->3->4->5->6->NULL
重排后为
1->3->5->2->4->6->NULL
输入:
{1,4,6,3,7}返回值:
{1,6,7,4,3}1->4->6->3->7->NULL
重排后为
1->6->7->4->3->NULL
奇数位节点有1,6,7,偶数位节点有4,3。重排后为1,6,7,4,3
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
ListNode* oddEvenList(ListNode* head) {
// write code here
if(head==nullptr){
return head;
}
ListNode *even=head->next;
ListNode *odd=head;
ListNode *evenHead=even;
while(even && even->next){
odd->next=even->next;
odd=odd->next;
even->next=odd->next;
even=even->next;
}
odd->next=evenHead;
return head;
}
};