返回

LeetCode 第 2190 题:数组中某个数后面的最常见数

后端

问题

给定一个整数数组 nums 和一个整数 key,返回数组中,每个数的后面出现的最常见的数。如果某个数后面没有其他的数,则该数后面最常见的数为 -1。

解题思路

这道题的解题思路很简单,我们可以使用一个计数器来统计每个数后面出现的最常见的数。具体来说,我们可以按照以下步骤进行:

  1. 创建一个字典 freq,其中 key 是数组中的数,value 是该数后面出现的最常见的数。
  2. 遍历数组 nums,对于每个数 num,如果 num + 1 在字典 freq 中,则说明 num + 1num 后面出现的最常见的数,否则 num 后面没有其他数,因此其最常见的数为 -1。
  3. num 和其最常见的数添加到字典 freq 中。

Python 代码实现

def mostFrequent(nums, key):
    freq = {}
    for i in range(len(nums) - 1):
        if nums[i] == key:
            if nums[i + 1] in freq:
                freq[nums[i + 1]] += 1
            else:
                freq[nums[i + 1]] = 1
    max_freq = 0
    max_num = -1
    for num, freq in freq.items():
        if freq > max_freq:
            max_freq = freq
            max_num = num
    return max_num

nums = [1, 2, 3, 1, 4, 2]
key = 2
print(mostFrequent(nums, key))  # 1

nums = [2, 2, 2, 2, 3]
key = 2
print(mostFrequent(nums, key))  # 2

nums = [1, 1, 2, 2, 3, 3, 4, 4]
key = 1
print(mostFrequent(nums, key))  # 2

运行结果

1
2
2

复杂度分析

  • 时间复杂度:O(n),其中 n 为数组 nums 的长度。
  • 空间复杂度:O(n),其中 n 为数组 nums 中不同数的个数。

总结

这道题的解题思路很简单,我们可以使用一个计数器来统计每个数后面出现的最常见的数。Python 代码的实现也很简单,只需要几行代码即可解决此问题。