思路:使用哈希表记录每个数出现的次数,然后遍历哈希表统计出现次数大于1的数的个数,即为能够删除的数的个数。

具体实现:

def max_removed_num(a):
    count = {}
    for num in a:
        count[num] = count.get(num, 0) + 1
    removed_num = 0
    for num in count:
        if count[num] > 1:
            removed_num += count[num]
    return removed_num

时间复杂度:遍历数组需要O(n)的时间,遍历哈希表统计出现次数大于1的数的个数需要O(hash_size)的时间,其中hash_size为哈希表的大小,最坏情况下为O(n),因此总时间复杂度为O(n)或O(nlogn)。空间复杂度为O(hash_size),最坏情况下为O(n)。

给你一个长度为n的数组a你现在有无数次选择 每次选择 ij i!=j 并且 ai等于aj然后将ai至aj删除求能够删除的数最多的是多少

原文地址: https://www.cveoy.top/t/topic/hqsm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录