与另一个NAND操作相比,从一个列表中删除重复项吗?

时间:2011-08-22 12:29:10

标签: logic

我有一个像

这样的清单
 list1 = {2,3,4,5,9}

另一个列表,如

  list2 = {3,5,10,9}

我想要一些操作(例如list.Operation(list2)),以便我可以返回list1

  list1 = {2,4}

是否与进行NAND操作相同?

4 个答案:

答案 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)算法。