中等难度
题目大意:给定单链表,更换排列顺序,将原来位置1234567,更换为1357246.要求空间复杂度为o(1),时间复杂度为o(n).
思路:暴力...
code:
struct ListNode* oddEvenList(struct ListNode* head) {
struct ListNode *p1, *odd, *even;
if(!head||!(head->next)||!(head->next->next)) return head;
odd=head;
even=head->next;
p1=even;
while(odd||even){
odd->next=odd->next->next;
even->next=even->next->next;
odd=odd->next;
even=even->next;
if(!odd->next||!(odd->next->next)) break;
}
odd->next=p1;
return head;
}
本文介绍了一种在O(n)时间复杂度和O(1)空间复杂度下,将单链表中的节点按奇偶顺序重新排列的方法。具体实现通过两个指针分别遍历奇数位置和偶数位置的节点,并进行重新连接。
524

被折叠的 条评论
为什么被折叠?



