如何将所有奇数放在左边,偶数放在数组右边
how to put all odd number in left an even number in right on array
给定两个整数数组 A 和 B,大小分别为 N 和 M。编写一个名为 MIX 并带有四个参数的函数,它将生成 return 第三个名为 C. 的数组,以便遵循以下序列。
-将A从左到右的所有奇数从左到右复制到C中。
- A 中从左到右的所有 eve 数都从右到左复制到 C 中。
- B从左到右的所有奇数从左到右复制到C中。
-B从左到右的所有偶数从右到左复制到C中。
示例 #1
输入
6 7
3 2 1 7 6 3
9 3 5 6 2 8 10
输出
3 1 7 3 9 3 5 10 8 2 6 6 2
C++ 代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> insert (vector<int> &a, vector<int> &b)
{
vector<int>c;
for (int i = 0 ;i < a.size() ; i ++)
{
if (a[i]%2!=0 )
c.push_back(a[i]);
else
c.insert(c.begin(),a[i]);
}
for(int j = 0; j < b.size() ; j++)
{
if (b[j]%2!=0 )
c.push_back(b[j]);
else
c.insert(c.begin(),b[j]);
}
return c;
}
int main (void){
int as;
int bs;
cin>>as>>bs;
vector<int> a(as);
vector<int> b(bs);
for(int i =0 ; i <a.size();i++)
{
cin>>a[i];
}
for(int k =0 ; k<b.size();k++)
{
cin>>b[k];
}
vector<int> c=insert(a,b);
for(int & v: c)
cout<<v<<" ";
return 0;
}
#include<iostream>
#include<vector>
using namespace std;
int * MIX(int *A,int n,int *B,int m){
int len = n+m;
int* C = new int[len];
vector<int>odd;
vector<int>even;
for(int i = 0; i < n ; i++){
if(A[i]%2==0)
even.insert(even.begin(), A[i]);
else
odd.push_back(A[i]);
}
for(int j = 0; j < m ; j++){
if(B[j]%2==0)
even.insert(even.begin(), B[j]);
else
odd.push_back(B[j]);
}
int k = 0;
for(k; k < odd.size(); k++)
{
C[k] = odd[k];
}
for(int l = 0 ; l < even.size(); l++)
{
C[l+k] = even[l];
}
return C;
}
#include <vector>
#include <algorithm>
static bool is_odd(int n) { return n % 2 == 1; }
// Let a == {3, 2, 1, 7, 6, 3} as example
static std::vector<int>::iterator order_odds_first_and_reverse_evens(std::vector<int> &a) {
// a == {3, 2, 1, 7, 6, 3}
const auto first_even{stable_partition(a.begin(), a.end(), is_odd)};
// a == {3, 1, 7, 3, 2, 6}
reverse(first_even, a.end());
// a == {3, 1, 7, 3, 6, 2}
return first_even;
// first_even points to 6
}
std::vector<int> insert(std::vector<int> &a, std::vector<int> &b) {
// b == {9, 3, 5, 6, 2, 8, 10}
order_odds_first_and_reverse_evens(b);
// b == {9, 3, 5, 10, 8, 2, 6}
// a == {3, 2, 1, 7, 6, 3}
a.insert(
order_odds_first_and_reverse_evens(a), // a == {3, 1, 7, 3, 6, 2}
b.begin(),
b.end()
);
// a == {3, 1, 7, 3, 9, 3, 5, 10, 8, 2, 6, 6, 2}
return a;
}
给定两个整数数组 A 和 B,大小分别为 N 和 M。编写一个名为 MIX 并带有四个参数的函数,它将生成 return 第三个名为 C. 的数组,以便遵循以下序列。
-将A从左到右的所有奇数从左到右复制到C中。 - A 中从左到右的所有 eve 数都从右到左复制到 C 中。 - B从左到右的所有奇数从左到右复制到C中。 -B从左到右的所有偶数从右到左复制到C中。
示例 #1
输入
6 7
3 2 1 7 6 3
9 3 5 6 2 8 10
输出
3 1 7 3 9 3 5 10 8 2 6 6 2
C++ 代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> insert (vector<int> &a, vector<int> &b)
{
vector<int>c;
for (int i = 0 ;i < a.size() ; i ++)
{
if (a[i]%2!=0 )
c.push_back(a[i]);
else
c.insert(c.begin(),a[i]);
}
for(int j = 0; j < b.size() ; j++)
{
if (b[j]%2!=0 )
c.push_back(b[j]);
else
c.insert(c.begin(),b[j]);
}
return c;
}
int main (void){
int as;
int bs;
cin>>as>>bs;
vector<int> a(as);
vector<int> b(bs);
for(int i =0 ; i <a.size();i++)
{
cin>>a[i];
}
for(int k =0 ; k<b.size();k++)
{
cin>>b[k];
}
vector<int> c=insert(a,b);
for(int & v: c)
cout<<v<<" ";
return 0;
}
#include<iostream>
#include<vector>
using namespace std;
int * MIX(int *A,int n,int *B,int m){
int len = n+m;
int* C = new int[len];
vector<int>odd;
vector<int>even;
for(int i = 0; i < n ; i++){
if(A[i]%2==0)
even.insert(even.begin(), A[i]);
else
odd.push_back(A[i]);
}
for(int j = 0; j < m ; j++){
if(B[j]%2==0)
even.insert(even.begin(), B[j]);
else
odd.push_back(B[j]);
}
int k = 0;
for(k; k < odd.size(); k++)
{
C[k] = odd[k];
}
for(int l = 0 ; l < even.size(); l++)
{
C[l+k] = even[l];
}
return C;
}
#include <vector>
#include <algorithm>
static bool is_odd(int n) { return n % 2 == 1; }
// Let a == {3, 2, 1, 7, 6, 3} as example
static std::vector<int>::iterator order_odds_first_and_reverse_evens(std::vector<int> &a) {
// a == {3, 2, 1, 7, 6, 3}
const auto first_even{stable_partition(a.begin(), a.end(), is_odd)};
// a == {3, 1, 7, 3, 2, 6}
reverse(first_even, a.end());
// a == {3, 1, 7, 3, 6, 2}
return first_even;
// first_even points to 6
}
std::vector<int> insert(std::vector<int> &a, std::vector<int> &b) {
// b == {9, 3, 5, 6, 2, 8, 10}
order_odds_first_and_reverse_evens(b);
// b == {9, 3, 5, 10, 8, 2, 6}
// a == {3, 2, 1, 7, 6, 3}
a.insert(
order_odds_first_and_reverse_evens(a), // a == {3, 1, 7, 3, 6, 2}
b.begin(),
b.end()
);
// a == {3, 1, 7, 3, 9, 3, 5, 10, 8, 2, 6, 6, 2}
return a;
}