首页 > 试题广场 >

奇数下标都是奇数或者偶数下标都是偶数

[编程题]奇数下标都是奇数或者偶数下标都是偶数
  • 热度指数:1956 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度不小于2的数组arr,实现一个函数调整arr,要么让所有的偶数下标都是偶数,要么让所有的奇数下标都是奇数
注意:1、数组下标从0开始!
2、本题有special judge,你可以输出任意一组合法解!同时可以证明解一定存在
[要求]
时间复杂度为,额外空间复杂度为


输入描述:
第一行一个整数N。表示数组长度
接下来一行N个整数表示数组内的数


输出描述:
输出N个整数。表示调整后的数组
示例1

输入

5
1 2 3 4 5 

输出

2 1 4 3 5

说明

样例中的输出保证了奇数下标都是奇数

备注:

let readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
const lines = [];
rl.on("line", function(line) {
    //将输入放到新建的空数组中
    lines.push(line);
    //判断,如果输入的行数等于某一值时
    if (lines.length === 2){
        //通过数组索引分别得到数组中每一行的数据,并做相应操作
        const num1 = lines[0].split(' ');
        const num2 = lines[1].split(' '); 
        let outArr =new Array(num1[0]);
        let odd = 1; // 奇数下标
        let even = 0; // 偶数下标
        for (let i = 0; i < num1[0]; i++) {
            if (num2[i] % 2 == 0) {
                outArr[even] = num2[i];
                even += 2;
            }else{
                outArr[odd] = num2[i];
                odd += 2;
            }
        }
        console.log(outArr);
        rl.close();
    }
});
发表于 2019-08-23 23:58:25 回复(0)