zoukankan      html  css  js  c++  java
  • 网易2018校招笔试题-数组能不能满足重排列后任意相邻的元素积都是4的倍数

        今天看了一下网易最新的校招笔试题:

        小易有一个长度为N的正整数数列A = {A[1], A[2], A[3]..., A[N]}。牛博士给小易出了一个难题:
         对数列A进行重新排列,使数列A满足所有的A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是4的倍数。
         小易现在需要判断一个数列是否可以重排之后满足牛博士的要求。

    代码如下:

     1 import java.util.Scanner;
     2 
     3 /**
     4  * Created by jy on 2017/9/9.
     5  */
     6 public class fourBeiShu {
     7     public static boolean isRequired(int length, int[] a) {
     8         int jiShu = 0;
     9         int four = 0;
    10         int ouShu = 0;
    11         for (int i = 0; i <= length - 1; i++) {
    12             //不符合要求
    13             if (a[i] <= 0) {
    14                 return false;
    15             }
    16             //奇数个数
    17             if (a[i] % 2 == 1) {
    18                 jiShu++;
    19             }
    20             //只是二的倍数个数
    21             if (a[i] % 2 == 0 && a[i] % 4 != 0) {
    22                 ouShu++;
    23             }
    24             //4的倍数
    25             if (a[i] % 4 == 0) {
    26                 four++;
    27 
    28             }
    29         }
    30         //4的倍数大于数组长度的一半-1,可以满足a[i]和a[i+1]中必定有一个是4的倍数,这样漏掉了全是偶数的情况,如2 2 6
    31         if (four >= length - four - 1) {
    32             return true;
    33         }
    34         //4的倍数的个数必须大于等于奇数个数(如果有奇数的话),同时,偶数个数必须至少2个,1 3 5 4 4 4 2 2 2 2 2 2 2 2 2
    35         if ((four >= jiShu) && (ouShu >= 2)) {
    36             return true;
    37         }
    38 
    39         return false;
    40     }
    41 
    42     public static void main(String[] args) {
    43         Scanner in = new Scanner(System.in);
    44         int num = in.nextInt();
    45         int n;
    46         int[] a;
    47         for (int i = 0; i < num; i++) {
    48             n = in.nextInt();
    49             a = new int[n];
    50             for (int j = 0; j < n; j++) {
    51                 a[j] = in.nextInt();
    52             }
    53             boolean b = isRequired(n, a);
    54             if (b) {
    55                 System.out.println("Yes");
    56             } else {
    57                 System.out.println("No");
    58             }
    59         }
    60     }
    61 }
  • 相关阅读:
    BZOJ1212 [HNOI2004]L语言
    BZOJ1202 [HNOI2005]狡猾的商人
    BZOJ1295 [SCOI2009]最长距离
    BZOJ1266 [AHOI2006]上学路线
    BZOJ1297 [SCOI2009]迷路
    php declare (ticks = N)
    使用 trait 时报PHP Parse error: syntax error, unexpected 'use' (T_USE) 这个错误
    yii2 and short_open_tag
    Nginx负载均衡配置实例详解
    Could not fetch https://api.github.com/repos/RobinHerbots/jquery
  • 原文地址:https://www.cnblogs.com/jy107600/p/7501676.html
Copyright © 2011-2022 走看看