首页 > 试题广场 >

小欧的奇数

[编程题]小欧的奇数
  • 热度指数:3308 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小欧有一个长度为 n 的数组,现在他想挑出 3 个数,使得这 3 个数的和为奇数,如果可以挑出则输出 "YES",否则输出 "NO"。

输入描述:
一行一个整数 n,表示数组的长度。
一行 n 个整数 a_1, a_2, \dots, a_n,表示数组的元素。
3 \leq n \leq 10^5
1 \leq a_i \leq 1000


输出描述:
如果可以挑出 3 个数,使得这 3 个数的和为奇数,则输出 "YES",否则输出 "NO"。
示例1

输入

4
1 2 3 4

输出

YES

说明

选取 a_1, a_2, a_4 即可。
示例2

输入

4
2 4 6 8

输出

NO

说明

无法选取 3 个数使得和为奇数。
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    let flag = 0,n,list
    while(line = await readline()){
        if(flag==0) {
            n = parseInt(line)
            flag++
        }
        else{
            list = line.split(' ').map(item=>parseInt(item))
        }
    }
    let countA=list.filter(item=>item%2==0).length,countB=list.filter(item=>item%2!=0).length
    if((countA>=2 && countB>=1)|| countB>=3) console.log('YES')
    else console.log('NO')
    
}()
发表于 2025-12-02 11:10:17 回复(0)
有前端大佬帮我看看吗?我写的只能通过20个测试案例,还有27个没通过但是不知道是什么原因导致的,代码也不报错
function checkArr(n,arr){     //n代表数组长度,arr代表数组
    let oddCount = 0;     //oddCount为数组内奇数的个数。
    let evenCount = 0;    //evenCount为数组内偶数的个数。
    if(arr.length<3){
            return "NO";
        }
    for(var i=0;i<n;i++){
        if(arr[i]%2 === 0){
            evenCount++;
        }else{
            oddCount++;
        }
    }
    if(oddCount >= 3){
        return "YES";
    }
    if(evenCount >=2 && oddCount >=1){
        return "YES";
    }else{
        return "NO";
    }
}
console.log(checkArr(7,[1,3,4,66,7,8,9]));
发表于 2025-11-14 15:07:18 回复(0)