在各种情况下我多次遇到这个问题.虽然我对C或Java感到满意,但它对所有编程语言都是通用的.
让我们考虑两个数组(或集合):
char[] A = {'a', 'b', 'c', 'd'};
char[] B = {'c', 'd', 'e', 'f'};
Run Code Online (Sandbox Code Playgroud)
如何将两个数组之间的公共元素作为新数组?在这种情况下,阵列A和B的交点是char[] c = {'c', 'd'}.
我想避免在另一个数组内重复迭代一个数组,这将增加执行时间(A长度为B的长度),这对于大型数组来说太多了.
有没有什么办法可以在每个数组中单独传递以获得公共元素?
给定两个数组或切片,例如:
a := []int{1, 2, 3, 4, 5}
b := []int{3, 4, 5, 6, 7, 8, 9}
Run Code Online (Sandbox Code Playgroud)
切片可能没有排序,顺序也没有关系。
什么是计算值的最有效方法,以使您最终获得两个切片的公共元素,而一个元素却不存在另一个元素的其余元素,即上面给出的两个数组的返回值将是:
common := []int{3, 4, 5}
inAButNotB := []int{1, 2}
inBButNotA := []int{6, 7, 8, 9}
Run Code Online (Sandbox Code Playgroud)
它很容易计算交叉点,将一个切片转换为地图,然后在一个切片上进行迭代以查看值是否存在。有没有一种方法可以计算同一循环中的其他两个值?