class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型vector * @return int整型vector */ ## 方法一: //冒泡排序走一个。超时,,过不了 vector<int> reOrderArray(vector<int>& array) { // // write code here // if(array.empty()) return array; // for(int i=0;i<array.size()-1;i++) // for(int j=0;j<array.size()-1;j++){ // // if(((array[j]&1)==0)&&((array[j+1]&1)==1)){ // if(array[j]%2==0&&array[j+1]%2==1){ // swap(array[j],array[j+1]); // } // } // return array; 方法二: //奇数从前往后相等,偶数就插到后面,然后删除中间没用改变的数; // int count=0; // int num=array.size(); // //array.resize(2*num); // for(int i=0;i<num;i++){ // if(array[i]&1){ // array[count]=array[i]; // count++; // }else // array.push_back(array[i]); // } // array.erase(array.begin()+count,array.begin()+num); // return array; ## 方法三: /* int i=array.size(); vector<int> v_even; int count=0; for(int i=0;i<array.size();i++){ if(array[i]&1){ array[count]=array[i]; count++; } else v_even.push_back(array[i]); } //直接将多的删除掉,再插入 while(array.size()!=count){ array.pop_back(); } array.insert(array.end(),v_even.begin(),v_even.end()); //下面通过,先插入,后用resize调整 // array.insert(array.begin()+count,v_even.begin(),v_even.end()); //array.resize(i); return array; */ ## 方法四: //直接创建两个vector,遍历,奇数插入和偶数插入 vector<int> v_even; vector<int> v_odd; for(int i=0;i<array.size();i++){ if(array[i]&1) v_odd.push_back(array[i]); else v_even.push_back(array[i]); } v_odd.insert(v_odd.end(),v_even.begin(),v_even.end()); return v_odd; } };