力扣刷题笔记 数组能形成多少数对

2023-11-12

在这里插入图片描述
代码如下:

from collections import defaultdict
class Solution:
    def numberOfPairs(self, nums: List[int]) -> List[int]:
        a=defaultdict(int)
        for i in nums:
            a[i]+=1
        print(a.keys(),a.values(),a)
        for i in a.keys():
            a[i]%=2
        print(Counter(a.values()))
        print(Counter(a.values())[0])
        return (sum(a.values()))

def stringToIntegerList(input):
    return json.loads(input)

def integerListToString(nums, len_of_list=None):
    if not len_of_list:
        len_of_list = len(nums)
    return json.dumps(nums[:len_of_list])

def main():
    import sys
    import io
    def readlines():
        for line in io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8'):
            yield line.strip('\n')

    lines = readlines()
    while True:
        try:
            line = next(lines)
            nums = stringToIntegerList(line);
            
            ret = Solution().numberOfPairs(nums)

            out = integerListToString(ret);
            print(out)
        except StopIteration:
            break

if __name__ == '__main__':
    main()

利用的是defaultdict以及counter类来实现两个统计的,一个是为了统计最初的个数,另一个是为了统计配对后0的个数,之后返回的是个列表,给它俩放一块返回就行。最开始的时候,想着是用零的个数来计算其配对的个数,结果发现不行,因为有的配对完之后不是零,有的配对了好几次,所以要换个方法,建立两个词典,一个记录余数,另一个记录原本的商数,这样的坏处在于浪费的内存比较多,但是还行,能用:

from collections import defaultdict
class Solution:
    def numberOfPairs(self, nums: List[int]) -> List[int]:
        a=defaultdict(int)
        p=defaultdict(int)
        for i in nums:
            a[i]+=1
            p[i]+=1
        print(a.keys(),a.values(),a)
        for i in a.keys():
            a[i]%=2
            p[i]//=2
        print(sum(p.values()))
        print(sum(a.values()))

def stringToIntegerList(input):
    return json.loads(input)

def integerListToString(nums, len_of_list=None):
    if not len_of_list:
        len_of_list = len(nums)
    return json.dumps(nums[:len_of_list])

def main():
    import sys
    import io
    def readlines():
        for line in io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8'):
            yield line.strip('\n')

    lines = readlines()
    while True:
        try:
            line = next(lines)
            nums = stringToIntegerList(line);
            
            ret = Solution().numberOfPairs(nums)

            out = integerListToString(ret);
            print(out)
        except StopIteration:
            break

if __name__ == '__main__':
    main()  

双百,吓一跳哈哈哈。
力扣上的代码是:

from collections import Counter,defaultdict
class Solution:
    def numberOfPairs(self, nums: List[int]) -> List[int]:       
        a=defaultdict(int)
        p=defaultdict(int)
        for i in nums:
            a[i]+=1
            p[i]+=1
        print(a.keys(),a.values(),a)
        for i in a.keys():
            a[i]%=2
            p[i]//=2
        return [(sum(p.values())),(sum(a.values()))]

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

力扣刷题笔记 数组能形成多少数对 的相关文章

随机推荐

  • mysql 替换语句 替换字段内容(全部或部分)

    mysql 替换语句 替换字段内容 全部或部分 将cdb pms表subject字段中的Welcom to替换成 欢迎光临 UPDATE cdb pms SET subject REPLACE subject Welcome to 欢迎光临
  • 如何开启 Microsoft Dynamics 365(OP) 部署级别跟踪

    最近服务器有问题 需要开启一下D365 CRM的部署级别跟踪 查询官方文档 部署级别跟踪通过 Windows PowerShell 命令进行设置且在 MSCRM CONFIG 数据库中进行维护 部署级别跟踪只能在拥有 Dynamics 36
  • 阿里云DataWorks开发UDF函数,自定义一周开始时间

    今天使用阿里云套件quick bi开发一个报表 需求是自定义上周六到本周五为自然周来统计周指标 常规日期函数已经不能满足此需求 需自定义UDF函数来实现 具体解决过程如下 知识储备 我们知道hive有一个日期转周函数 weekofyear
  • MySQL高级语句(二):VIEW视图、正则及常见计算

    目录 一 VIEW 视图 1 1 概念 1 2 创建 查看和删除视图 二 联集 2 1 UNION 2 1 UNION ALL 三 交集值 3 1 两表没有单独重复的行 并且确实有交集的时候用 3 2 取两个SQL语句结果的交集 且没有重复
  • 环境搭建:Win 10 + Eclipse 搭建 C/C++ 开发环境

    Win 10 Eclipse 搭建 C C 开发环境 最近想利用 Eclipse 搭建一个 C C 开发环境 本以为是件很容易的事情 毕竟很久之前也搭建过 没想到耗了半天的时间 踩了好久的坑 在此记录一下实验过程 为什么用 Eclipse
  • Connect-The-Dots靶场

    靶场下载 https www vulnhub com entry connect the dots 1 384 一 信息收集 探测存活主机 netdiscover r 192 168 16 161 24 nmap sP 192 168 16
  • spring 多租户_使用Spring Security的多租户应用程序的无状态会话

    spring 多租户 从前 我发表了一篇文章 解释了构建无状态会话的原理 巧合的是 我们再次为多租户应用程序执行同一任务 这次 我们将解决方案集成到Spring Security框架中 而不是自己构建身份验证机制 本文将解释我们的方法和实现
  • 马斯克强制员工重返办公室:每周至少40小时,不然就走人

    据称特斯拉公司首席执行官埃隆 马斯克给该司员工发了一封电子邮件 要求他们要么回来到岗上班 要么离开公司 目前这封邮件被流传出来 引起了不少人的热议 网传邮件截图如下 或许是第一封邮件未能表达出全部讯息 马斯克很快又追加了第二封内部邮件 除了
  • 指定GPU运行python程序

    一 命令行运行python程序时 1 首先查看哪些GPU空闲 nvidia smi显示当前GPU使用情况 nvidia smi 2 然后指定空闲的GPU运行python程序 CUDA VISIBLE DEVICES 0 2 3 python
  • Python Intro - ipdb debug install

    1 build and install setuptools 1 1 download setuptools setuptools 15 0 tar gz 1 2 unzip setuptools tar xf setuptools 15
  • DFX分析 包括DFM等

    DFX 面向产品生命周期各个环节的设计 可制造 可装配 可靠性 可服务 可测试等等 DFX基于并行设计的思想 在产品的概念设计和详细设计阶段就综合考虑到制造过程中的工艺要求 测试要求和组装合理性 同时还考虑到维修要求 售后服务要求和可靠性要
  • 快手小铃铛跳转微信扫描技术多少钱教学

    快手小铃铛跳转微信扫描技术多少钱教学 快手小铃铛 快手小铃铛跳转微信 小铃铛跳转微信 宝贝 平台上的变现方案你都有参加吗 光合计划手气福袋拉新活动 我以前都跟大家分享了一下 今天介绍一下磁力精英小铃铛的变现 这也是一项大的变现 点来看 这是
  • /sys/module 模块信息与 /proc/modules

    看到一篇关于 proc moduels 以及 sys module 相关介绍 转载一下 http linux chinaunix net techdoc system 2008 07 18 1018163 shtml 在编译模块的时候 如果
  • 浅析如何设计一个亿级网关

    1 背景 1 1 什么是API网关 API网关可以看做系统与外界联通的入口 我们可以在网关进行处理一些非业务逻辑的逻辑 比如权限验证 监控 缓存 请求路由等等 1 2 为什么需要API网关 RPC协议转成HTTP 由于在内部开发中我们都是以
  • letax报错“ I can't write on file `***.pdf”

    问题 运行时代码报错 原因 是我打开了生成的所生成的pdf文档了 关闭文档和其所在的文件夹 重新运行 一切正常
  • 【软考-中级】系统集成项目管理工程师【总】

    网站 https bm ruankao org cn sign welcome 持续更新中 学习目标 完成2023上半年 软件中考任务 目标23年5月 考试前 完成 相关知识点学习 和练习 核心 十五至尊图 上面图是考试的核心 需要背下来
  • 眼保健操(UPWND公益版)保护眼睛

    眼保健操 UPWND公益版 新版六节眼保健操 请跟随音乐口令节奏做操 每节均有具体图文示范 网络时代 专家建议每使用电脑1小时 请休息5分钟 共分六节 第一节 按揉攒竹穴 第二节 按压睛明穴 第三节 按揉四白穴 第四节 按揉太阳穴 刮上眼眶
  • 浅谈RAID写惩罚(Write Penalty)与解决方案闪存荷尔蒙(FlashHormone)

    浅谈RAID写惩罚 Write Penalty 与解决方案闪存荷尔蒙 FlashHormone 介绍 通常在讨论不同RAID保护类型的性能的时候 结论都会是RAID 1提供比较好的读写性能 RAID 5读性能不错 但是写入性能就不如RAID
  • 一文了解 Python 中的生成器

    前言 生成器很容易实现 但却不容易理解 生成器也可用于创建迭代器 但生成器可以用于一次返回一个可迭代的集合中一个元素 现在来看一个例子 def yrange n i 0 while i lt n yield i i 1 每次执行 yield
  • 力扣刷题笔记 数组能形成多少数对

    代码如下 from collections import defaultdict class Solution def numberOfPairs self nums List int gt List int a defaultdict i