python - 使用python的频率阵列
问题描述
我正在尝试解决 codeforces 上的问题,它与频率阵列有关,这是问题的链接https://codeforces.com/group/MWSDmqGsZm/contest/219774/problem/V
这是我的代码:
N , M = [int(i) for i in input().split()]
A = [int(i) for i in input().split()]
for i in range(1,M+1):
print(A.count(i))
但是这段代码太慢了,我在测试 2 中超出了时间限制。
解决方案
.count()
花费 O(N) 时间,并且您正在为输入列表的每个元素执行此操作,导致时间复杂度为 O(N^2),这就是您获得 TLE 的原因。
您需要dictionary
通过仅迭代一次将每个项目的频率存储在 a 中,然后最后打印它们。时间复杂度:O(N + M)
尝试这个。
from collections import Counter
N , M = [int(i) for i in input().split()]
A = [int(i) for i in input().split()]
c = Counter(A)
for i in range(1,M+1):
print(c[i])
推荐阅读
- php - 文件包括混淆和错误
- cordova - 我如何将 pouch db 与 typescript 一起用于 cordova 应用程序
- jquery-ui - 取消选择所有日期时如何为日期选择器设置默认月份?
- javascript - 使用Vuejs的单个数组元素中的多个字段
- python - /csvfolder/query Traceback 上的异常(最后一次调用)
- c++ - 无法找到未定义行为的原因
- android - 如何在电话呼叫或振铃时在后台运行服务?
- javascript - 如何从 React 中的状态调用动态变量?
- sql-server - SQL-SERVER - CASE 错误 - 特定源中的 CASE 不起作用
- java - 使用 Spring 在 Swagger UI 上接收 404 错误