📜  给定大小的子数组中最大唯一整数数(1)

📅  最后修改于: 2023-12-03 15:27:34.768000             🧑  作者: Mango

给定大小的子数组中最大唯一整数数

问题描述

给定一个整数数组 nums 和一个整数 k ,请找到在长度为 k 的子数组中出现次数最多的元素。如果存在多个元素出现频率相同,则返回其中最大的元素。

解决思路

这道题的解决思路比较简单,我们可以使用一个哈希表来存储子数组中每个元素出现的次数,然后找到出现次数最多的那个元素。我们可以使用一个滑动窗口,对于数组中的每个元素,我们将它添加到窗口中,并更新哈希表中对应元素的出现次数。如果窗口长度大于 k,我们就把窗口中最左边的那个元素从哈希表中删除,再把窗口向右移动一个单位,直到窗口长度为 k

最后,我们再次遍历哈希表,找到出现次数最多的元素并返回即可。

代码实现
def max_unique(nums, k):
    max_num, max_count = None, -1
    counter = {}
    for i in range(len(nums)):
        num = nums[i]
        counter[num] = counter.get(num, 0) + 1
        if i >= k:
            left_num = nums[i-k]
            counter[left_num] -= 1
            if counter[left_num] == 0:
                del counter[left_num]
        if i >= k-1:
            for num, count in counter.items():
                if count > max_count or (count == max_count and num > max_num):
                    max_num = num
                    max_count = count
    return max_num
测试样例
assert max_unique([1,2,3,2,1], 3) == 2
assert max_unique([1,2,3,2,2,1], 3) == 2