调整数组顺序使奇数位于偶数前 — C++实现
发布日期:2021-10-02 06:27:39 浏览次数:2 分类:技术文章

本文共 459 字,大约阅读时间需要 1 分钟。

题目描述

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

解题思路

若要使奇数位于偶数前面,这个要求不难(前后两个指针,偶数和奇数交换),而题目中还要求我们保持相对位置不变,那么:

我们可以申请额外的空间,将数组中的奇数和偶数都取出来,然后将原数组按照奇偶数的规则修改,但是这样以来会需要更多的额外空间。

也可以采用顺序遍历的方法,遇到偶数则移动到下一个偶数的前面,不过这样的时间复杂度比较高。

这里介绍一种低复杂度的方法

  • 遇到偶数则删除,并将该数放到数组末尾,这样遍历结束以后的数组即为所求。

代码实现

class Solution {
public: void reOrderArray(vector
&array) {
int s=0,e=array.size(); while(s
运行时间:2ms占用内存:476k

转载地址:https://blog.csdn.net/Jeaten/article/details/108308756 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:链表中倒数第k个结点 — C++实现
下一篇:表示数值的字符串 — C++实现

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月23日 23时42分21秒