java - 数组中所有数字都被 2 整除的次数

标签 java arrays algorithm

我正在尝试计算 array 中所有 integers 被 2 整除的次数,只考虑一个 integer每一步。 例如,最初如果我有 array :[2,4,2]count = 0

Step 1

[1,4,2] , count=1

Step 2

[1,2,2] , count=2

Step 3

[1,1,2] , count=3

Step 4

[1,1,1] , count=4

我解决问题的方法如下:

代码

public static void main(String[] args) {
     int[] ar={2,4,2};
     int[] p=new int[ar.length];
     int count=0;
     for (int i=0;i<ar.length ;i++ ) {
        if(ar[i]>=1){
            ar[i]=ar[i]/2;
            count++;
        }
     }
     for (int x:ar) {
        System.out.println(x);
     }
     System.out.println("Count:"+count);

}

Output

1
2
1
Count:3

上面给出的代码中的问题是数组只被扫描了一次,我想扫描数组直到所有的整数都不能被2整除

最佳答案

请注意,您有两个问题:

  1. 您最多将数组的每个元素除以 2。
  2. 您将数组的元素除以 2 而没有首先检查它们是否可以被 2 整除。

你需要一个内部循环来划分每个数组元素,只要它能被 2 整除:

public static void main(String[] args) {
     int[] ar={2,4,2};
     int[] p=new int[ar.length];
     int count=0;
     for (int i=0;i<ar.length ;i++ ) {
        while (ar[i] % 2 == 0 && ar[i] > 0) { // keep dividing ar[i] by 2 as long as 
                                              // it is divisible by 2
            ar[i]=ar[i]/2;
            count++;
        }
     }
     for (int x:ar) {
        System.out.println(x);
     }
     System.out.println("Count:"+count);
}

关于java - 数组中所有数字都被 2 整除的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46386955/

相关文章:

java - 什么是 Jersey 的 ContextResolver 和 Provider?

java - Java 中的矩阵和 vector 数组

java - 将文件内容读入循环链表

arrays - 将函数应用于 Julia 中的列对

c - 如何将 2d 数组中的 1 个字符转换为 1d 数组

ruby - 为什么在这个算术级数和的代码中需要第三个变量?

python - 如何标记字符串(其中包含有关数学计算和 float 的数据)?

java - 1 次测试运行后无法读取文件,org.apache.poi.EmptyFileException : The supplied file was empty (zero bytes long)

javascript - 从数组数组中删除元素

algorithm - 部分排序以找到第 k 个最大/最小元素