題目描述一队寇、
- 輸入一個整數(shù)數(shù)組,實現(xiàn)一個函數(shù)來調(diào)整該數(shù)組中數(shù)字的順序章姓,
- 使得所有的奇數(shù)位于數(shù)組的前半部分佳遣,所有的偶數(shù)位于數(shù)組的后半部分,
題目解讀
代碼
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
bool par(int x){
return x&1; // 偶數(shù)返回0啤覆,奇數(shù)返回1
}
void reOrderArray(vector<int> &array) {
int left = 0;
int right = array.size() - 1;
int temp;
while(left < right){
// 從前到后找偶數(shù),碰到奇數(shù)跳過
while(left < right && par(array[left])){
left ++;
}
// 從后往前找奇數(shù),碰到偶數(shù)跳過
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);
}
題目描述二苍日、
- 輸入一個整數(shù)數(shù)組,實現(xiàn)一個函數(shù)來調(diào)整該數(shù)組中數(shù)字的順序
- 使得所有的奇數(shù)位于數(shù)組的前半部分窗声,所有的偶數(shù)位于數(shù)組的后半部分
- 并保證奇數(shù)和奇數(shù)相恃,偶數(shù)和偶數(shù)之間的相對位置不變 (例如:輸入[1, 2, 3, 4, 5, 6, 7],輸出為: [1, 3, 5, 7, 2, 4, 6])
題目解讀
- 劍指Offer 上沒有題目描述中的第三行話
- 題目思路是:新建兩個數(shù)組存放奇數(shù)和偶數(shù)笨觅,然后將奇輸數(shù)組和偶數(shù)數(shù)組分別放到array數(shù)組中去
代碼
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
bool par(int x){
return x&1; // 偶數(shù)返回0拦耐,奇數(shù)返回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);
}
總結展望
最后編輯于 :
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者