【LeetCode-05 好数对的数目 python解法】

代码:

基础解法:两个for循环进行比较,挨个比较。

这需要 O(n *n)的时间。

复制代码
class Solution:
    def numIdenticalPairs(self, nums: List[int]) -> int:
        sum = 0
        for i in range(len(nums)):
            for j in range(i+1, len(nums)):
                if nums[i] == nums[j]:
                    sum = sum+1
        return sum

优化解法:


复制代码
class Solution:
    def numIdenticalPairs(self, nums: List[int]) -> int:
        ans = 0                          # 好数对的数量
        cnt = defaultdict(int)            # 创建默认字典,默认值为0
        for x in nums:                    # 遍历数组,x = nums[j]
            # 此时 cnt[x] 表示之前遍历过的 x 的个数,加到 ans 中
            ans += cnt[x]                 # 关键:先加,后存
            cnt[x] += 1                   # 把当前 x 存入字典
        return ans

将题目中数组的数据存入到创建的字典中,字典中:键是数据的标签,值是标签对应的数据。字典的结构就是 {键1: 值1, 键2: 值2, ...}。键是唯一的,不能重复的,否则值会被覆盖。

总结:遇到这种问题,均可用此法,时间复杂度和空间复杂度都是o(n)。理解字典的值和键关系

相关推荐
小七-七牛开发者4 分钟前
让 Go 走得更远:用 LLGo 打通 Go 与 C/C++/Python 生态
python·编程·编译器·llvm·llgo
小此方4 分钟前
[算法实战论:动态规划]背包问题概念,01不满背包问题,01满背包问题,背包问题的滚动数组空间优化
算法·动态规划
悠仁さん1 小时前
【C++】哈希表
c++·算法·散列表
CyrusYiVPP1 小时前
实测 Ollama 本地部署:我用 Python 搓了个离线问答机器人,Qwen4 27B 一到换个模型名就能用
人工智能·python
地平线开发者2 小时前
点云算法整理与常用计算模块:从数据到模型,再到工程与量化
算法·自动驾驶
2601_967980112 小时前
Python中flatten( )函数及函数用法详解
python·numpy·数组操作·flatten函数·列表处理
xbzb2 小时前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
武子康4 小时前
H3-World 为何在加载 LoRA 前,先检查导入的代码?
人工智能·深度学习·算法
秋天的怀念_David5 小时前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法
合尘猫5 小时前
图片表格变结构化数据:OCR 后的三个坑
python·ocr