【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)。理解字典的值和键关系

相关推荐
劈星斩月2 分钟前
监督学习算法 之 决策树
学习·算法·决策树
卷无止境3 分钟前
Python 异常处理:从入门到工程实践
后端·python
garuda herb5 分钟前
生成专题页Blog--建立并返回 MySQL 数据库连接
python·mysql
学计算机的计算基6 分钟前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
ONE_SIX_MIX9 分钟前
qwenpaw-plugin-file-tools QwenPaw增强文件工具 更新 v1.1.1
python·qwenpaw
tachibana211 分钟前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode
AOwhisky13 分钟前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
码农学院31 分钟前
GEO与SEO协同:从传统搜索到生成式搜索的平滑迁移路径
服务器·前端·python
程序员羽痕32 分钟前
基于 Django + PyTorch 的中文字体识别系统
pytorch·python·django
To_OC8 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode