首页 > 代码库 > 调整该数组中数字的顺序,奇数在前,偶数在后
调整该数组中数字的顺序,奇数在前,偶数在后
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
class Solution { public: void reOrderArray(vector<int> &array) { vector<int> a,b; for(int i=0;i<array.size();i++) { if(array[i]%2==1) a.push_back(array[i]); else b.push_back(array[i]); } for(int j=0;j<b.size();j++) a[a.size()-1+j]=b[j]; } };
超时,溢出了!
改进一下代码,如下。
class Solution { public: void reOrderArray(vector<int> &array) { vector<int> b; vector<int>::iterator ib; for(ib=array.begin();ib!=array.end();) { if(*ib%2==0) { b.push_back(*ib); ib=array.erase(ib); } else ib++; } vector<int> ::iterator ib2=b.begin(); for(ib2;ib2!=b.end();ib2++) { array.push_back(*ib2); } } };
碰到另外一种思路:
思路:类似冒泡算法,前偶后奇数就交换: class Solution { public: void reOrderArray(vector<int> &array) { for (int i = 0; i < array.size();i++) { for (int j = array.size() - 1; j>i;j--) { if (array[j] % 2 == 1 && array[j - 1]%2 == 0) //前偶后奇交换 { swap(array[j], array[j-1]); } } } } };
调整该数组中数字的顺序,奇数在前,偶数在后
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。