zoukankan      html  css  js  c++  java
  • 重排数列-Java实现(2018网易校招研发岗)

    题目:

    链接:https://www.nowcoder.com/questionTerminal/6c184566ecff4d3baff3536449d4a3e2
    来源:牛客网

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

    输入描述:
    输入的第一行为数列的个数t(1 ≤ t ≤ 10),
    接下来每两行描述一个数列A,第一行为数列长度n(1 ≤ n ≤ 10^5)
    第二行为n个正整数A[i](1 ≤ A[i] ≤ 10^9)

    输出描述:
    对于每个数列输出一行表示是否可以满足牛博士要求,如果可以输出Yes,否则输出No。

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int t = sc.nextInt();
            while(sc.hasNext()){
                int n = sc.nextInt(); // 数组长度
                int two = 0;  // 2的倍数的个数
                int four = 0;  // 4的倍数的个数
                for(int i=0; i<n; i++){
                    int a = sc.nextInt();
                    if(a%4 == 0)
                        four++;
                    else if(a%2 == 0)
                        two++;
                }
                if(four >= n-four-two)  // 符合要求的排列:所有2的倍数相邻排在一起;所有4的倍数与其他数相间排列,且其他数的个数不能超过4的倍数的个数
                   System.out.println("Yes");
                else
                    System.out.println("No");
    
            }
            sc.close();
        }
    }
    
  • 相关阅读:
    B.Little Sub and Triples
    A.Little Sub and Applese
    1003 超级无敌简单题[暴力打表]
    1002 人类史上最大最好的希望事件[前缀和]
    1001 hzy 和zsl 的生存挑战
    Computer Arrangement [经典贪心]
    Linux指令
    LInux
    Servlet
    El表达式与JSTL表达式
  • 原文地址:https://www.cnblogs.com/paopaolx/p/11289790.html
Copyright © 2011-2022 走看看