首页 > 试题广场 >

牛牛爱奇数2

[编程题]牛牛爱奇数2
  • 热度指数:185 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛和牛妹在玩一个游戏,在他们面前有n个数,牛妹每次说出一个数m,牛牛就要从这些数中找到m个数使它们的和刚好为奇数(这是游戏胜利的条件),不能够做到的话则牛牛输掉游戏。
牛牛特别想赢得游戏,所以他想请你帮忙,给定n个数和m,如果牛牛能够赢得游戏,返回"YES",反之,返回"NO"。
示例1

输入

1,1,[1]

输出

"YES"

说明

因为只有一个数,牛妹要求的也是一个数,且该数刚好为奇数,所以牛牛可以赢得游戏。 

备注:

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 如果牛牛能够赢得游戏,返回"YES",反之,返回"NO"。
# @param n int整型 代表共有n个数
# @param m int整型 代表牛妹说的数m
# @param a int整型一维数组 代表这n个数的大小
# @return string字符串
#
class Solution:
    def solve(self , n , m , a ):
        # write code here
        cache1,cache2=[],[]
        for i in range(len(a)):
            if a[i]%2==1:
                cache1.append(a[i])
            else:
                cache2.append(a[i])
        A = len(cache1)
        B = len(cache2)
        if A==0 or (B==0 and m%2==0):
            return "NO"
        else:
            return "YES"
            
            
            

发表于 2021-04-23 18:41:22 回复(0)
前提:n>=m;
1、当m为奇数,n个数中必须有1个奇数保证和为奇数;
2.、当m为偶数,那个数中必须要1和奇数、1个偶数保证和为偶数;
string solve(int n, int m, vector<int>& a) {
        // write code here
       vector<int> flag(2);
       for(auto i:a){
           flag[i&1]++;
       }
       if(flag[1]==0)return "NO";
       if(!(m&1)){
           //奇数
           if(flag[0]==0)return "NO";
       }
       return "YES";
    }


发表于 2021-03-07 20:20:54 回复(0)

问题信息

难度:
2条回答 1239浏览

热门推荐

通过挑战的用户