zl程序教程

您现在的位置是:首页 >  后端

当前栏目

奇偶序列 码蹄集

序列 奇偶
2023-09-11 14:16:29 时间

题目来源:码蹄集

题目描述:

在这里插入图片描述
在这里插入图片描述
B站老师思路讲解链接:https://www.bilibili.com/video/BV1MX4y1R77W/?t=647.2&vd_source=3ae2a916df1bc5c1114c2bf3e95a2118

C++代码实现:

原文参考链接:https://blog.51cto.com/u_15745546/5950613

#include<bits/stdc++.h>

using namespace std;

const int N=1e5+100;

int a[N];
int ans[N];
vector<int> odd,even;

int main() {
    int n;
    cin>>n;

    for(int i=1;i<=n;i++) {
        cin>>a[i];
    }

    for(int i=1;i<=n;i++){
        ans[i]=a[i]&1;
        if(ans[i]) odd.push_back(a[i]);
        else even.push_back(a[i]);
    }

    sort(odd.begin(),odd.end());
    sort(even.begin(),even.end());

    int p1=0,p2=0;
    for(int i=1;i<=n;i++){
        if(ans[i]) cout<<odd[p1++]<<" ";
        else cout<<even[p2++]<<" ";
    }

    cout<<endl;
    return 0;
}

Python代码实现:

n = int(input())
a = list(map(int, input().split()))

ans = []
odd = []
even = []

for i in range(n):
    ans.append(a[i] & 1)
    if ans[i]:
        odd.append(a[i])
    else:
        even.append(a[i])

odd.sort()
even.sort()

p1 = 0
p2 = 0

for i in range(n):
    if ans[i]:
        print(odd[p1], end=" ")
        p1 += 1
    else:
        print(even[p2], end=" ")
        p2 += 1

print()

Java代码实现:

import java.util.*;

public class Main {
    static final int N = 100010;

    static int[] a = new int[N];
    static int[] ans = new int[N];
    static List<Integer> odd = new ArrayList<>();
    static List<Integer> even = new ArrayList<>();

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();

        for(int i=1; i<=n; i++) {
            a[i] = scan.nextInt();
        }

        for(int i=1; i<=n; i++){
            ans[i]=a[i]&1;
            if(ans[i] == 1) odd.add(a[i]);
            else even.add(a[i]);
        }

        Collections.sort(odd);
        Collections.sort(even);

        int p1=0,p2=0;
        for(int i=1;i<=n;i++){
            if(ans[i] == 1) System.out.print(odd.get(p1++)+" ");
            else System.out.print(even.get(p2++)+" ");
        }

        System.out.println();
    }
}

代码提交测试结果:

在这里插入图片描述