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

相关推荐
外收内放6 小时前
数据分析(数据清洗)
python·学习·数据分析
jeo陽6 小时前
05-数组与冒泡排序:第一个数据结构与经典算法
c语言·数据结构·算法
小小张说故事6 小时前
Python 的 True + True 为什么等于 2?bool 是 int 子类,这个设计坑了多少人
python
鸽鸽程序猿6 小时前
【刷题册】hot21-25
算法
Keven_116 小时前
算法札记:记忆化搜索中面对多组数据的初始化
算法
happyprince6 小时前
02-具体观 · JevAny算法与实现剖析
人工智能·算法
Nil2087 小时前
leetcode 75颜色分类
数据结构·算法·leetcode
Liaiyang667 小时前
空圈容错视角 · 多维切面篇:我们生活的世界,不止三维
人工智能·算法·系统架构·前沿技术·哲学·认知科学
神仙别闹7 小时前
基于Python实现自动化测试作业—图像增广方案
图像处理·python·计算机视觉
闻缺陷则喜何志丹7 小时前
【环】P6709 [CCC 2020] Swapping Seats 环|普及+
算法·洛谷·环