【发布时间】:2021-06-04 10:36:13
【问题描述】:
我已经写了一个代码来回答这个问题:
给定一个整数数组 nums 和一个整数 k,返回 k 个最频繁的元素。您可以按任何顺序返回答案。
示例 1: 输入:nums = [1,1,1,2,2,3], k = 2 输出:[1,2]
总结一下我的代码,我将 nums 中的每个项目作为字典中的键输入,然后简单地通过迭代 numbs 对每个元素进行计数,并将对象的“计数”作为值存储在字典中:
from collections import defaultdict
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
my_dict = defaultdict(int)
top_two_final = []
for i in range(len(nums)):
my_dict[nums[i]] += 1
sorted_values = sorted(my_dict.values(), reverse=True)
for j in my_dict:
for l in sorted_values[:k]:
if my_dict[j] == l:
top_two_final.append(j)
return set(top_two_final)
我的问题是关于时间和空间的复杂性。
我相信两者都是 O(Mk);其中 M 是输入 nums 的大小,数组“sorted_values”的大小(即 k)
但是由于 k 是一个常数,是否可以得出两个复杂度都是 O(M) 的结论?
【问题讨论】: