Arrays 不进行比较的1和0的计数数

Arrays 不进行比较的1和0的计数数,arrays,algorithm,data-structures,Arrays,Algorithm,Data Structures,在一个只有1和0的数组中,如何计算1和0的数量而不进行比较,然后将其修改为3和5的数组。 我的方法是使用累积数组,这样累积[i]=数组[i]+累积[i-1]。一的数量=累计[n]零的数量=n-累计[n]; 这种方法正确吗?或者建议其他方法? 我们是否可以在不进行比较的情况下将其转换为3和5的数组?您的方法是正确的。我也不认为它可以改进很多——毕竟你需要迭代所有的数组元素 要转换0->3和1->5,可以使用查找表 const int lookup[]={3,5}; forloop { ar

在一个只有1和0的数组中,如何计算1和0的数量而不进行比较,然后将其修改为3和5的数组。
我的方法是使用累积数组,这样累积[i]=数组[i]+累积[i-1]。一的数量=累计[n]零的数量=n-累计[n]; 这种方法正确吗?或者建议其他方法?
我们是否可以在不进行比较的情况下将其转换为3和5的数组?

您的方法是正确的。我也不认为它可以改进很多——毕竟你需要迭代所有的数组元素

要转换0->3和1->5,可以使用查找表

const int lookup[]={3,5};

forloop {
   array[i] = lookup[array[i]];
}

我想你可以不用比较就可以做到这一点,因为在大多数语言中,
0
被视为
False
,而
1
被视为
True
。 示例:C,Python

因此,与其比较值是0还是1,不如直接将其用作条件,这样您就可以在不进行比较的情况下完成这项工作。您可以使用相同的值来计算
1
0
的发生次数

在Python中,这将转换为以下代码

>>> original_list = [0, 1, 1, 1, 0, 1, 0]
>>> altered_list = [3 if item else 5 for item in original_list]
>>> print altered_list
[5, 3, 3, 3, 5, 3, 5]

你必须使用一个事实,你只有一个和零,而且对于任何一个项目,项目加上“一减一”会产生“一”。因此,要计算每个项目的数量,您可以使用:

numOfOnes += item[i];
numOfZeroes += (1 - item[i]);
接下来的问题是,你必须以某种方式将0转换为5,将1转换为3。使用与上面相同的技巧-一个数字和一个负数的加权和,使其分别产生3和5。你必须计算出正确的重量值


肯定没有比较。作为奖励,您可以在一次过程中完成所有这些操作—转换值并动态计数。

您可以使用计数排序方法技术:创建另一个大小为2的数组,例如b[2]。然后这样做:

for(int i=0; i < n; i++) {
b[a[i]]++;
}
for(int i=0;i
最后,b[0]将有0个计数,b[1]将有1个计数。

//要找到0和1的计数,我们可以在下面做
//To find the count of 0 & 1 we can do below 
public void findZeroOneCount(int [] arr){
        int len=arr.length;
        System.out.println(len);
        int sum=0;
        for(int i=0;i<len;i++){
            sum=sum+arr[i];
        }

        System.out.println("Count of Zero:"+(len-sum%len));
        System.out.println("Count of One:"+sum%len);
}
公共无效findZeroOneCount(int[]arr){ int len=arr.length; 系统输出打印项次(len); 整数和=0;
对于(inti=0;我能不进行比较就把它转换成3和5的数组吗?你可以做一些类似于
new\u array[i]=old\u array[i]的事情*2+3
。请注意,这种方法仅适用于实践-它不会优化任何内容,并且会降低可读性使用关联字典,只使用数字作为键,将字典中的值默认为0表示新元素。数组是否同时包含3和5?还是仅包含0和一个非0数字?即0和3,或者0和5,或者…?将所有值相加,然后从元素的长度/数量中减去这些值怎么样?不难看出,对于一开始已知的任意一对值,这种方法不需要改变太多。这些仍然是比较-即使它们使用隐式转换。请在外部稍微解释一下您的解决方案码块编码