网易 JAVA第一题 4的倍数

我 本地起码测过了 示例。 为何牛客上是 0通过??求大神看看我的代码(我的思路是 看给的数列中大于4 且能整除4的个数 只要大于数列的一半 就可以。也不知知道严谨不严谨 但起码 示例  2 3 1 10 100 4 1 2 3 4 过了)
Scanner sc =new Scanner(System.in); int n=sc.nextInt();  String[] ee=new String[n];
 for (int u=0;u<n;u++){ int m=sc.nextInt();  int count=0;  int[] arr=new int[m];  for (int i=0;i<arr.length;i++){

            arr[i]=sc.nextInt();  if(arr[i]>=4&&arr[i]%4==0)

                count++;  } if(count>=arr.length/2)

            ee[u]="Yes";  else  ee[u]="No";  } for (int k=0;k<ee.length;k++){

        System.out.println(ee[k]);  }

}

全部评论
import java.util.Scanner; public class Main{     public static void main(String[] args){         Scanner in=new Scanner(System.in);         int t=in.nextInt();         in.nextLine();         while(in.hasNext()){         int n=in.nextInt();         in.nextLine();         int[] arr=new int[n];         String str=in.nextLine();         String[] strs=str.split(" ");         for(int i=0;i<n;i++){         arr[i]=Integer.parseInt(strs[i]);         //System.out.println(arr[i]);         }         boolean b=function(arr);         //System.out.println(b);         if(b==false){         System.out.println("No");         }         else{System.out.println("Yes");}         }     }     public static boolean function(int[] arr){     boolean flag=false;     int n=arr.length;     int sum=0;     int sum2=0;     int sum4=0;     for(int i=0;i<n;i++){     if(arr[i]%4==0){     sum4++;     //System.out.println(sum4);     }     else if(arr[i]%4!=0&&arr[i]%2==0){     sum2++;     //System.out.println(sum2);     }     else if(arr[i]%2!=0){     sum++;     //System.out.println(sum);     }     }     if(sum2==1){     if(sum4>=sum2+sum-1){flag=true;}     else{flag=false;}     //System.out.println(flag);     }     else if(sum2!=1){     if(sum4==0){     if(sum==0){flag=true;}     else{flag=false;}     }     else{     if(sum4>=sum){flag=true;}     else{flag=false;}     }     }     return flag;     } }
点赞 回复 分享
发布于 2017-09-09 17:03
大佬AC多少啊?
点赞 回复 分享
发布于 2017-09-09 17:04
4的倍数只要大于奇数的个数就可以了,不需要大于一半。
点赞 回复 分享
发布于 2017-09-09 17:05
全部都是2的倍数也行
点赞 回复 分享
发布于 2017-09-09 17:05
不大于一半也是可以的,只要相邻的两数是2的倍数就行==比如1 4 2 2 2,所以你还差个2的倍数的判断。。
点赞 回复 分享
发布于 2017-09-09 17:05
要统计4的个数,2的个数和1的个数,
点赞 回复 分享
发布于 2017-09-09 17:05
1,10,100  这个测试用例都不能过吧
点赞 回复 分享
发布于 2017-09-09 17:06
我的想法是 4的倍数+1>奇数+补正 补正为1如果存在2的倍数但不是4的倍数 数列是 4的倍数插在奇数中间,2的倍数(如果存在)插在两个4之间
点赞 回复 分享
发布于 2017-09-09 17:07
public static void main(String args[]) { Scanner in = new Scanner(System.in); int t = in.nextInt(); for(int i=0;i<t;i++) { int n = in.nextInt(); int sum_2 = 0; int sum_4 = 0; for(int j=0;j<n;j++) { int num = in.nextInt(); if(num%4==0) sum_4++; else if(num%2==0) sum_2++; } if(sum_2>=n-2*sum_4) System.out.println("Yes"); else System.out.println("No"); } }
点赞 回复 分享
发布于 2017-09-09 17:07
是4的倍数的数  多于  奇数即可
点赞 回复 分享
发布于 2017-09-09 17:08
a =  4的倍数个数 b = 2的倍数个数(不包括4的倍数) c = 奇数个数 if a >= b return true;   if a == b - 1 &&  c > 1 return true; return false;
点赞 回复 分享
发布于 2017-09-09 17:11
我的做法是统计被4整除的个数a4和被2整除的个数a2。假如n为奇数 (2*a4+a2)>= (n-1) 则满足。 假如n为偶数(2*a4+a2)>= n满足 。AC了
点赞 回复 分享
发布于 2017-09-09 17:15
4的倍数个数不小于奇数个数就行
点赞 回复 分享
发布于 2017-09-09 17:19
四的个数大于等于奇数的个数即可,不用大于一半
点赞 回复 分享
发布于 2017-09-09 17:21
总数为n,统计4的倍数的数sum_4,和统计不是4的倍数但是是2的倍数sum_2,sum_2>=n-2*sum_4的话为Yes,否则为No
点赞 回复 分享
发布于 2017-09-09 17:05
应该是遍历数组 找到4的倍数个数x 和  整除2不整除4的倍数y 如果x>=n/2 肯定是YES x<n/2时  x!=0 y>=n-(2x+1) YES  x==0 y==n YES 其他情况是NO  比如 14122  14141 1414 222  我觉得这个思路应该是对的吧 没有做题
点赞 回复 分享
发布于 2017-09-09 17:33

相关推荐

明天不下雨了:我靠2022了都去字节了还什么读研我教你****:你好,本人985电子科大在读研一,本科西南大学(211)我在字节跳动实习过。对您的岗位很感兴趣,希望获得一次投递机会。
点赞 评论 收藏
分享
给🐭🐭个面试机会吧:我boss直聘天天有家教跟我打招呼😓
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务