Math 如何简单地检查一组n个数字是否都不同?

Math 如何简单地检查一组n个数字是否都不同?,math,numbers,logic,Math,Numbers,Logic,我有n个整数,我需要一个快速的逻辑测试,看看它们都是不同的,我不想比较每一个组合来找到一个匹配的…有什么好的和优雅的方法的想法吗 我不管你的想法用什么编程语言,我可以转换 使用集合数据结构如果您的语言支持它,您还可以考虑保留所见元素的哈希表 在python中,您可以尝试 seen={} n_already_seen=n in seen seen[n]=n n\u ready\u seen将是一个布尔值,指示n是否已经被看到。由于交换性和传递性,您不必检查每个组合;您可以简单地沿着列表向下查看,

我有n个整数,我需要一个快速的逻辑测试,看看它们都是不同的,我不想比较每一个组合来找到一个匹配的…有什么好的和优雅的方法的想法吗


我不管你的想法用什么编程语言,我可以转换

使用集合数据结构如果您的语言支持它,您还可以考虑保留所见元素的哈希表

在python中,您可以尝试

seen={}
n_already_seen=n in seen
seen[n]=n

n\u ready\u seen
将是一个布尔值,指示n是否已经被看到。

由于交换性和传递性,您不必检查每个组合;您可以简单地沿着列表向下查看,并将每个条目与后面的条目进行核对。例如:

bool areElementsUnique( int[] arr ) {
    for( int i=0; i<arr.Length-1; i++ ) {
        for( int j=i+1; j<arr.Length; j++ ) {
            if( arr[i] == arr[j] ) return false;
        }
    }
    return true;
}
bool arelementsunique(int[]arr){

对于(int i=0;i您可以使用哈希表或使用哈希的一组数据结构。然后,您可以将所有元素插入哈希表或哈希集中,并且在插入时检查元素是否已在表/集中。如果出于某种原因,您不想在执行时进行检查,则可以插入所有数字,然后检查是否存在错误。)如果结构的大小小于n,则必须有重复的元素。否则,它们都是唯一的

这是一个非常紧凑的Java解决方案,时间复杂度是O(n),空间复杂度也是O(n)

public boolean arallelementsunique(int[]列表)
{
Set=newhashset();
用于(整数编号:列表)
if(集合包含(编号))
返回false;
其他的
设置。添加(编号);
返回true;
}

我觉得发布一个比你的答案更长的答案非常愚蠢。我完全没有注意到,我真的很抱歉!
public boolean areAllElementsUnique(int [] list)
{
    Set<Integer> set = new HashSet<Integer>();
    for (int number: list)
        if (set.contains(number))
            return false;
        else
            set.add(number);
    return true;
}