给定一个单链表,使得链表中奇数位于偶数之前。 解析:快排的思想,设置两个指针,p1指向最后一个奇数位置,p2指向当前位置,每当p2移动一位时,判断p2指向的元素是否为奇数,如果是奇数,则p2位置的元素和p1下一位置的元素交换,p1更新为p1->next。如果是偶数,则p2直接下移一位。时间复杂度为o(n)。ListNode* oddEvenList01(ListNode* head) { if (head == NULL || head->next == NULL) return head; ListNode *q = NULL; ListNode *p = head; while (p) { if (p->val & 1) { if (q == NULL) { swap(head->val, p->val); q = head; } else { q = q->next; swap(q->val, p->val); } } p = p->next; } return head; }
调整链表顺序使奇数位于偶数前面
最新推荐文章于 2021-03-11 15:46:34 发布