网易前端2020笔试编程题--1.序列转换

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 256M,其他语言512M

小易给你一个包含n个数字的数组 。你可以对这个数组执行任意次以下交换操作:
对于数组中的两个下标i,j(1<=i,j<=n),如果 为奇数,就可以交换 a_ia_j
 
现在允许你使用操作次数不限,小易希望你能求出在所有能通过若干次操作可以得到的数组中,字典序最小的一个是什么。

输入描述:
第一行一个整数n;
第二行n个整数
a_1,a_2,..,a_n
,表示数组,每两个数字之间用一个空格分隔。
输入保证

输出描述:
n个整数,每两个整数之间用一个空格分隔,表示得到的字典序最小的数组。


解答思路:
1.只要有任意两值和为奇数则可互相交换,则两值必为一奇一偶,再排序
2.注意输入输出,字符串数组,字符串数字的相互转化

const n = readline();
const line = readline();
let lines = line.split(' ');
for (let i = 0; i < n; i++) {
    lines[i] = parseInt(lines[i]);
};
const odd = lines.some(item => (
    (item % 2) == 1
));
const even = lines.some(item => (
    (item % 2) == 0
))

if (odd && even) {
    lines.sort((a, b) => (a - b));
}

let newlines = lines.join(' ');
console.log(newlines);


猜你喜欢

转载自www.cnblogs.com/shengliuyang/p/12285293.html