网站首页

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > Python >

算法题技巧-Python collections.defaultdict

时间:2025-02-18 21:22

人气:

作者:admin

标签:

导读:想使用哈希表存元素个数想起来defaultdict dict和defaultdic的区别 访问不存在的键: dict:当访问不存在的键时,会抛出KeyError异常。 defaultdict:当访问不存在的键时,会调用工厂函数返回一...

想使用哈希表存元素个数想起来defaultdict

dict和defaultdic的区别

访问不存在的键:

dict:当访问不存在的键时,会抛出KeyError异常。
defaultdict:当访问不存在的键时,会调用工厂函数返回一个默认值。

fruits = {"apple": 2, "banana": 1}
print(fruits["orange"])  # KeyError: 'orange'

fruit_count = defaultdict(int)
print(fruit_count["orange"])  # 输出:0

初始化默认值:

dict:需要手动为每个键设置初始值,例如使用setdefault方法。
defaultdict:在创建时通过工厂函数一次性设置所有键的初始值。

fruits = {}
fruits.setdefault("apple", 0)
fruits.setdefault("banana", 0)

fruit_count = defaultdict(int)

示例题目

https://www.lanqiao.cn/problems/3527/learning/
image
Ai!的累加结果,A1! + A2! + ... + An!,A1 < A2 < ... < An,则A1!为最大公因数
考虑阶乘的合并情况:有(x+1) * y个x!,能合并为y个(x+1)!。即合成条件为x!的个数为x+1的倍数
使用map存储某个数x的阶乘出现的次数,若达到一定次数,则转换为x+1的阶乘

from collections import defaultdict
n = int(input())
a = list(map(int, input().split()))
a.sort()
Map = defaultdict(int)

for x in a:
    Map[x] += 1

x = a[0]
while True:
    cnt = Map[x]
    if cnt % (x + 1) == 0:
        Map[x + 1] += cnt // (x + 1)
        x += 1
    else:
        print(x)
        break
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信