gpt4 book ai didi

java - 在 Java 中使用位操作的集合的所有可能子集

转载 作者:行者123 更新时间:2023-12-02 04:28:07 24 4
gpt4 key购买 nike

我们如何使用 Java 中的位操作生成集合的所有可能子集?例如,如果我们有一个 int 数组 [1, 2, 3],所有可能的子集是:

[            
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]

最佳答案

从 0 计数到 (2set.size() - 1)(含)。检索当前计数中与 1 位对应的元素。当然,必须对集合进行排序才能按索引检索元素。

唯一棘手的部分是提取与当前计数中的 1 位相对应的元素。以下是实现此目的的一种方法的伪代码:

for (int pos = 0, mask = 1; mask <= currentCount; mask <<= 1; ++pos) {
if ((currentCount & mask) != 0) {
include element at pos in the current subset
}
}

请注意,这假设原始集合大小不超过您用于计数和掩码的任何整数类型的可用位数。

关于java - 在 Java 中使用位操作的集合的所有可能子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31883816/

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