gpt4 book ai didi

java - 通过二进制数组进行数组选择

转载 作者:行者123 更新时间:2023-12-01 18:43:05 26 4
gpt4 key购买 nike

我们有一个随机长度和随机数的数组,例如。

[12, 2345, 232, 52, 24]. 

我们只想选择那些由二进制数定义的,例如。

5= 101 = [0, 0, 1, 0, 1] 

所以我想要得到的数组X是

[0, 0, 232, 0, 24];

示例

int[] x = {12, 2345, 232, 52, 24};
int b = 5;
int[] X = eliminate(x, b);

//
x = [12, 2345, 232, 52, 24]
b = [ 0, 0, 1, 0, 1]
X = [ 0, 0, 232, 0, 24]

有什么快速的方法可以做到这一点吗?

谢谢

最佳答案

使用 BitSet 可能会有所帮助,对于 intBitSet 之间的转换,请查看此处:BitSet to and from integer/long

这是使用链接中的 Bits 类的快速破解:

public static int[] eliminate( int[] x, int b) {
BitSet bs = Bits.convert( b );
int[] X = new int[x.length];

for( int i = 0; i < x.length; i++){
if( bs.get( x.length - (i + 1) ) ){
X[i] = x[i];
}
else {
X[i] = 0;
}
}

return X;
}

结果将是:

x = [12, 2345, 232, 52, 24]
b = 5 (i.e. 101 binary)
X = [0, 0, 232, 0, 24]

请注意,如果您想直接定义位,只需在BitSet中设置它们即可。

关于java - 通过二进制数组进行数组选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19089581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com