首页 > 试题广场 >

小欧的奇数

[编程题]小欧的奇数
  • 热度指数: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 个数使得和为奇数。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        try {
            BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
            int n = Integer.parseInt(bf.readLine());
            String[] arr = bf.readLine().split(" ");
            int a = (int)Arrays.stream(arr)
                            .map(Integer::parseInt)
                            .filter(i -> i % 2 == 1)
                            .count();
            int b = n - a;
            if ((a >= 3) || (a >= 1 && b >= 2)) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
        } catch (IOException e) {
            //
        }
    }
}
发表于 2024-12-26 21:06:24 回复(0)