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();
        }
    }
    
  • 相关阅读:
    这些例子很炫,感兴趣的童鞋可以了解一下
    Java经典习题24
    Java经典习题23
    Java经典练习题22
    Java经典习题21
    Java经典习题20
    Java经典练习题19
    Java经典练习题18
    Java经典习题17
    Java经典习题16
  • 原文地址:https://www.cnblogs.com/paopaolx/p/11289790.html
Copyright © 2011-2022 走看看