题解 | #小欧的奇数#

小欧的奇数

https://www.nowcoder.com/practice/aef41039765b433998812b9e9cfe02c2

解题思路

要使三个数的和为奇数,需要考虑奇偶性:

  1. 三个偶数相加 = 偶数
  2. 一个奇数两个偶数相加 = 奇数
  3. 两个奇数一个偶数相加 = 偶数
  4. 三个奇数相加 = 奇数

因此,只需要统计数组中奇数和偶数的个数,然后判断是否能选出和为奇数的三个数即可。

代码

#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int n;
    cin >> n;
    vector<int> a(n);
    int odd = 0, even = 0;
    
    for(int i = 0; i < n; i++) {
        cin >> a[i];
        if(a[i] % 2) odd++;
        else even++;
    }
    
    if((odd >= 1 && even >= 2) || odd >= 3) {
        cout << "YES\n";
    } else {
        cout << "NO\n";
    }
    
    return 0;
}
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int odd = 0, even = 0;
        
        for(int i = 0; i < n; i++) {
            int x = sc.nextInt();
            if(x % 2 == 1) odd++;
            else even++;
        }
        
        if((odd >= 1 && even >= 2) || odd >= 3) {
            System.out.println("YES");
        } else {
            System.out.println("NO");
        }
    }
}
n = int(input())
a = list(map(int, input().split()))

odd = sum(1 for x in a if x % 2)
even = n - odd

if (odd >= 1 and even >= 2) or odd >= 3:
    print("YES")
else:
    print("NO")

算法及复杂度

  • 算法:计数统计。
  • 时间复杂度: ,其中 n 为数组长度。
  • 空间复杂度: ,只需要常数个变量。
全部评论

相关推荐

牛客41406533...:回答他在课上学,一辈子待在学校的老教授用三十年前的祖传PPT一字一句的讲解,使用谭浩强红皮书作为教材在devc++里面敲出a+++++a的瞬间爆出114514个编译错误来学这样才显得专业
点赞 评论 收藏
分享
11-25 09:41
已编辑
Java
程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务