返回
LeetCode 第 2190 题:数组中某个数后面的最常见数
后端
2024-01-16 15:02:32
问题
给定一个整数数组 nums 和一个整数 key,返回数组中,每个数的后面出现的最常见的数。如果某个数后面没有其他的数,则该数后面最常见的数为 -1。
解题思路
这道题的解题思路很简单,我们可以使用一个计数器来统计每个数后面出现的最常见的数。具体来说,我们可以按照以下步骤进行:
- 创建一个字典
freq
,其中key
是数组中的数,value
是该数后面出现的最常见的数。 - 遍历数组
nums
,对于每个数num
,如果num + 1
在字典freq
中,则说明num + 1
是num
后面出现的最常见的数,否则num
后面没有其他数,因此其最常见的数为 -1。 - 将
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 代码的实现也很简单,只需要几行代码即可解决此问题。