题目描述一、
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,
- 使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,
题目解读
代码
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
bool par(int x){
return x&1; // 偶数返回0,奇数返回1
}
void reOrderArray(vector<int> &array) {
int left = 0;
int right = array.size() - 1;
int temp;
while(left < right){
// 从前到后找偶数,碰到奇数跳过
while(left < right && par(array[left])){
left ++;
}
// 从后往前找奇数,碰到偶数跳过
while(left < right && !par(array[right])){
right --;
}
if(left < right){
temp = array[left];
array[left] = array[right];
array[right] = temp;
}
}
}
vector<int> create(vector<int> array){
array.push_back(1);
array.push_back(2);
array.push_back(3);
array.push_back(4);
array.push_back(5);
array.push_back(6);
array.push_back(7);
return array;
}
void print_vector(vector<int> array){
for(int i=0; i < array.size(); i++){
cout<<array[i]<<" ";
}
cout<<endl;
}
};
main(){
Solution ss;
vector<int> array;
array = ss.create(array);
ss.print_vector(array);
ss.reOrderArray(array);
ss.print_vector(array);
}
题目描述二、
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序
- 使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分
- 并保证奇数和奇数,偶数和偶数之间的相对位置不变 (例如:输入[1, 2, 3, 4, 5, 6, 7],输出为: [1, 3, 5, 7, 2, 4, 6])
题目解读
- 剑指Offer 上没有题目描述中的第三行话
- 题目思路是:新建两个数组存放奇数和偶数,然后将奇输数组和偶数数组分别放到array数组中去
代码
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
bool par(int x){
return x&1; // 偶数返回0,奇数返回1
}
void reOrderArray(vector<int> &array) {
vector<int> qi;
vector<int> ou;
for(int i=0; i < array.size(); i++){
if(par(array[i])){
qi.push_back(array[i]);
}
else{
ou.push_back(array[i]);
}
}
int qi_len = qi.size();
for(int i=0; i < qi_len; i++){
array[i] = qi[i];
}
int ou_len = ou.size();
for(int i=0; i < ou_len; i++){
array[qi_len + i] = ou[i];
}
}
vector<int> create(vector<int> array){
array.push_back(1);
array.push_back(2);
array.push_back(3);
array.push_back(4);
array.push_back(5);
array.push_back(6);
array.push_back(7);
return array;
}
void print_vector(vector<int> array){
for(int i=0; i < array.size(); i++){
cout<<array[i]<<" ";
}
cout<<endl;
}
};
main(){
Solution ss;
vector<int> array;
array = ss.create(array);
ss.print_vector(array);
ss.reOrderArray(array);
ss.print_vector(array);
}
总结展望