我有一个像
这样的清单 list1 = {2,3,4,5,9}
另一个列表,如
list2 = {3,5,10,9}
我想要一些操作(例如list.Operation(list2)),以便我可以返回list1
list1 = {2,4}
是否与进行NAND操作相同?
答案 0 :(得分:4)
没有。 NAND操作适用于两个布尔值。你有两个清单。
这称为差异或complement。
答案 1 :(得分:3)
NAND,不包括 - 并且包括不在两个集合中的所有“位”。暗示上限,例如7,15,31或63. bits是一个有序的集合,其真值/假值最好用BitSet建模。
e.g。
set1 = {2,3,4,5,9}
set2 = {3,5,9,10}
and = {3,5,9}
nand = {0,1,2,4,6,7,8,10,11 ... }
是想要的二进制文件
set1 = 0b10 | 0b100 | 0b1000 | 0b10000 | 0b100000000
set2 = 0b100 | 0b1000 | 0b10000 | 0b100000000 | 0b10000000000
and = 0b100 | 0b1000 | 0b10000 | 0b100000000
nand = 0b1 | 0b10 | 0b100 | 0b10000 | 0b100000 | 0b10000000 | 0b100000000 | etc
答案 2 :(得分:2)
你所描述的,是一个固定的差异。
在C ++中,您可以使用std::set_difference
。
答案 3 :(得分:1)
您正在寻找set_difference
,但这需要对两个列表进行排序。如果它们没有排序,您可以随时执行明显的O(n^2)
算法。