zerofly's Blog

努力不一定成功,但不努力一定不会成功

0%

调整数组奇数在前偶数在后(C++)

刷题平台

牛客网

题目

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

解题思路

根据题意可知将数组分为两个部分,可以考虑两端都可插入的双向数组deque容器

然后通过使用vector容器的赋值操作assign把deque容器的值赋值给vector容器array。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution
{
public:
void reOrderArray(vector<int> &array)
{
deque<int> result;
int size = array.size();
for (int i = 0; i < size; i++)
{
if (array[i] % 2 == 0)
result.push_back(array[i]);
if (array[size-1-i] % 2 == 1) // 向前插入奇数时,为了保证奇与奇的相对位置,需倒序遍历
result.push_front(array[size-1-i]);
}
array.assign(result.begin(), result.end());
}
};

vector容器中的assign(beg, end)即将[beg, end]区间的值赋值给本身。

文章作者:zerofly

发布时间:2020年05月20日 - 17:05

原始链接:http://zeroflycui.github.io/558b5743.html

许可协议: 转载请保留原文链接及作者。