看起来这应该很简单,但我现在已经苦苦挣扎了几个小时了...我有几个相同大小的数组,如果两个元素包含的话,我想返回true完全相同的元素,忽略顺序。
[1,2], [2,1] # should return true
[1,2], [2,2] # should return false
intersect()
失败,因为intersect([2,2], [1,2])
,intersect([2,2], [2,2])
都会返回2
,而我无法区分出第一个案例对我来说是错误的,而第二种情况是真的。
setdiff
失败,因为订单很重要。 setdiff([1,2], [2,2])
会返回1
,因此它会显示这些集之间存在差异并提供我需要的信息。但是,setdiff([2,2], [1,2])
返回emtpy,当我需要的东西让我知道这些集合不相同(减去顺序)。
答案 0 :(得分:1)
您还可以使用setdiff
两次:
d1 = setdiff(a,b);
d2 = setdiff(b,a);
match = (length(d1)+length(d2)==0);
当且仅当两个设置差异都为空时, a
和b
才相等。
答案 1 :(得分:0)
这是我最终解决的答案。
match = Sort(x) == Sort(y)
match = union(1, match)
然后如果匹配== 1,则为true,否则为false。似乎应该有更好的东西,基于集合而不是排序