代码随想录算法训练营第三天

2023-10-26

今天是算法训练营的第三天;
写了454. 四数相加 II这道题目
力扣链接
代码随想录链接

代码如下:

class Solution:
    def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:
        # 使用字典存储nums1和nums2中的元素及其和
        hashmap = dict()
        for n1 in nums1:
            for n2 in nums2:
                # if n1 + n2 in hashmap:
                #     hashmap[n1+n2] += 1
                # else:
                #     hashmap[n1+n2] = 1
                # 上面的四行代码可以改写为下面的代码,同一个意思
                hashmap[n1+n2] = hashmap.get(n1 + n2, 0) + 1
                 

        # 如果 -(n3 + n4)存在于hashmap,那么就将结果++
        count = 0
        for n3 in nums3:
            for n4 in nums4:
                key1 = -(n3+n4)
                if key1 in hashmap: # 如果hashmap这个字典中的键,和key1相对应的话,那就说明可以相加为0
                    count += hashmap[key1]

        return count

通过Python字典这个数据结构的键值对的形式,来解题。

拓展:
Python中的dict和C里面的map相同点和不同点总结

在Python和C++中,dict和map是用于存储键值对的数据结构,但在语法和实现上存在一些差异。下面是dict和C++中的map的相同点和不同点,并附带示例说明:

相同点:

  1. 存储键值对:dict和map都用于存储键值对,通过键来访问对应的值。

  2. 动态性:它们都支持动态地添加、删除和修改键值对。

不同点:

  1. 语言和语法:dict是Python的内置数据类型,在Python中直接使用,而map是C++标准库中的容器,需要包含相应的头文件和使用命名空间。

  2. 内存管理:Python的dict使用动态内存分配和垃圾回收机制,不需要手动管理内存。而C++中的map使用动态内存分配和自动析构,也可以手动管理内存。

  3. 键和值的类型:Python的dict可以存储各种类型的键和值,包括不同的数据类型和对象。C++中的map通常需要明确指定键和值的类型,可以使用自定义类型作为键和值。

下面两个示例分别展示了使用dict和map存储键值对,并进行一些操作。在Python示例中,我们创建了一个字典person,包含了姓名、年龄和职业等键值对。然后,我们通过访问键来获取对应的值,使用print函数输出结果。接着,我们添加了一个新的键值对、修改了一个值,并删除了一个键值对。最后,使用pprint.pprint函数打印出字典的内容。

在C++示例中,我们使用了std::map容器来存储键值对。我们添加了两个键值对,修改了一个值,并删除了一个键值对。最后,通过for循环遍历map,打印出键值对的内容。

需要注意的是,C++中的示例使用了C++标准库中的map容器,实际使用中还可以使用其他容器,如unordered_map等。这里的示例只是为了演示与Python中dict的比较。

Python中的dict示例:

# 导入模块
import pprint

# 创建字典
person = {
    'name': 'John',
    'age': 30,
    'city': 'New York'
}

# 访问字典中的值
print(person['name'])  # 输出: John

# 添加新的键值对
person['occupation'] = 'Engineer'

# 修改值
person['age'] = 35

# 删除键值对
del person['city']

# 遍历字典
pprint.pprint(person)

C++中的map示例:

#include <iostream>
#include <map>

int main() {
    // 创建map
    std::map<std::string, int> person;

    // 添加键值对
    person["name"] = 30;
    person["age"] = 30;

    // 修改值
    person["age"] = 35;

    // 删除键值对
    person.erase("name");

    // 遍历map
    for (const auto& kv : person) {
        std::cout << kv.first << ": " << kv.second << std::endl;
    }

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

代码随想录算法训练营第三天 的相关文章

  • x 或 y:可接受的习语,还是混淆?

    我必须从可能为 None 的变量中提取值 并考虑一些默认值 我首先写了这段代码 if self maxTiles is None maxX maxY 2 2 else maxX maxY self maxTiles 然后我意识到我可以将其缩
  • C++ 相当于 Python getattr

    在Python中 有一个名为getattr的函数 它看起来像这样 class MyObject def init self self xyz 4 obj MyObject getattr obj xyz 其中对 getattr 的调用将返回
  • 将 python scikit learn 模型导出到 pmml

    我想将 python scikit learn 模型导出到 PMML 中 什么 python 包最适合 我读到Augustus https github com opendatagroup augustus 但我找不到任何使用 scikit
  • python列表理解和extend() [重复]

    这个问题在这里已经有答案了 深入学习 Python 2 7 1 但未能理解这一点 几个小时 gt gt gt a 1 2 gt gt gt b 3 4 gt gt gt gt gt gt a extend b 0 gt gt gt a 1
  • 使用自定义元素类在 Python 中解析 xml

    我想使用 Python 的 xml etree ElementTree 模块解析 xml 文档 但是 我希望生成的树对象中的所有元素都具有我定义的一些类方法 这建议创建我自己的 Python 元素类的子类 但我无法告诉解析器在解析时使用我自
  • 为什么我在 Python 中收到“连接被拒绝”错误? (插座)

    我是套接字新手 请原谅我完全缺乏理解 我有一个服务器脚本 server py usr bin python import socket import the socket module s socket socket Create a so
  • 如何从 python 脚本更改 python 文件中的变量值

    我目前有一个 python 文件 其中包含一堆带有值的全局变量 我想从一个单独的 python 脚本永久更改这些值 我尝试过 setattr 等 但似乎不起作用 有没有办法做到这一点 简短的回答是 不 不值得这么麻烦 听起来您正在尝试创建一
  • Python - 如何将双引号附加到字符串并存储为新字符串?

    我正在使用 Python 2 6 并且想将双引号附加到字符串并将其存储为新的字符串变量 我不想打印它 但稍后在我的 python 脚本中使用它 例如 a apple b some function a gt b would be equal
  • 使用 boto 和 python 从带有参数的布局创建 mTurk HIT

    我正在尝试利用 boto 在 Mechanical Turk 中生成 HIT 目标是使用我的 mTurk 帐户上已生成的通用布局 并向其传递图像 URL 以迭代创建 HIT 问题是 即使正确命名参数 如果图像 url boto 也不成功 我
  • 如何将 NaN 数组插入 numpy 二维数组

    我试图在二维数组中的特定位置插入任意数量的 NaN 值行 我正在将来自微控制器的一些数据记录在 csv 文件中并使用 python 进行解析 数据存储在 3 列 2D 数组中 如下所示 122 0 1 0 47 0 123 0 1 0 47
  • 使用底图和Python在地图中绘制海洋

    我正在绘制此处提供的 netCDF 文件 https goo gl QyUI4J https goo gl QyUI4J Using the code below the map looks like this 然而 我希望海洋是白色的 更
  • 如何在 Python 中重命名文件并保留创建日期

    我知道创建日期不存储在文件系统本身中 但是当我使用时我遇到了问题os rename 它正在更新我正在使用的文件的创建日期 是否可以重命名文件而不更改其原始创建日期 正如都铎所说 你可以使用os stat http docs python o
  • SyntaxError:多个异常类型必须用括号括起来

    我是初学者 在使用 python 安装 pycaw 进行音频控制后遇到问题 在放置 pycaw 的基本初始化代码时 出现以下错误 Traceback most recent call last File c Users volumeCont
  • Python - Map/Reduce - 如何在使用 DISCO 计数单词示例中读取 JSON 特定字段

    我正在按照 DISCO 示例来计算文件中的单词数 将单词数作为 Map Reduce 作业 http discoproject org doc disco start tutorial html 我对此工作没有任何问题 但是我想尝试从包含
  • NumPy 中 exp(-x^2) 的快速傅立叶变换

    I have to calculate numerically the 2nd derivative of a Gaussian function I ve read every question on this topic here bu
  • 来自字典列表列表的 Pandas DataFrame

    我有一个数据结构 它是字典列表的列表 Height 86 Left 1385 Top 215 Width 86 Height 87 Left 865 Top 266 Width 87 Height 103 Left 271 Top 506
  • 查找一个列表在另一个列表中的值的索引

    我有两个 Python 整数列表 x and y 的所有元素x出现在某处y 而且只有一次 对于每个元素x 我想知道对应值的索引y 然后我想将这些索引设置为一个列表z 下面的代码按照我刚刚描述的方式工作 然而 对于一项任务来说 这似乎有点笨拙
  • 如何通过pygit2获取当前签出的Git分支名称?

    这个问题应该与 如何获取Git中当前的分支名称 https stackoverflow com questions 6245570 how to get current branch name in git 获取 git 当前分支 标签名称
  • 保存 Jupyter Notebook,并显示 Plotly Express 小部件

    我有一个 Jupyter 笔记本 python 我使用plotlyexpress 在笔记本中绘图以进行分析 我想与非编码人员共享此笔记本 并让交互式视觉效果仍然可用 但它似乎不起作用 我尝试以下此处提出的建议 https community
  • 交响二阶颂歌

    我有一个简单的二阶 ODE 的齐次解 当我尝试使用 Sympy 求解初始值时 它返回相同的解 它应该替代 y 0 和 y 0 并产生一个没有常数的解 但事实并非如此 这是建立方程的代码 它是一个弹簧平衡方程 k 弹簧常数 m 质量 我在其他

随机推荐

  • Mysql高级部分系列(四)

    1 数据库的设计规范 1 1 为什么不使用自增ID 1 1 1 自增ID的问题 自增ID做主键 简单易懂 几乎所有数据库都支持自增类型 只是实现上各自有所不同而已 自增ID除了简单 其他都是缺点 总体来看存在以下几方面的问题 1 1 1 1
  • idea 部署git总结

    idea 部署git总结 github密匙快捷获取方法 idea将本地项目上传到远程仓库GitHub 报错 error src refspec master does not match any Everything up to date
  • 【线程池上篇】4种常用线程池介绍

    一 线程池介绍 概念 使用原因 线程池就是提前创建好一些线程放在一起的集合 线程池的工作模式时拿到任务后在自己的池子里找看谁闲着 这个活就让谁去干 多线程模式下 系统需要不断地启动和关闭新线程 这个过程不但消耗资源而在存在线程间过渡的不安全
  • C 程序结构

    原文链接 https www runoob com cprogramming c program structure html 在我们学习 C 语言的基本构建块之前 让我们先来看看一个最小的 C 程序结构 在接下来的章节中可以以此作为参考
  • 通过python技术获取甲流分布数据

    近期 多地学校出现因甲流导致的班级停课 儿科甲流患者就诊量呈数倍增长 此轮甲流为何如此严重 感染甲流之后会出现哪些症状 经过专家的介绍甲流之所以这么严重有这些原因导致的 一 疫情完全放开后很多孩子不戴口罩了 预防流感的作用会下降 二是 免疫
  • background-position的向右对齐用法

    一直只知道background position x轴位置 y轴位置 如果靠近左边偏移7px就写成background position 7px 20px 这样的 但是像右要怎么办 以前我是傻傻的给父容器计算了宽度 然后就向左偏移固定的宽度
  • 为什么推荐科研工作使用git

    为什么推荐科研工作使用git 每个人都会犯错 而使用Git 的最大好处就在于 几乎在所有的情况下你都能 撤消 你的错误操作 比如如果你忘记了把一个小小的改动包含进来 因此你要改正你的上个提交 又或者你想要撤销一个完整的提交 因为这个功能有可
  • 【C/C++】获取计算机CPUID序列号

    1 GetGPUId h文件 pragma once include
  • 【解决报错】c#使用ManagedWifi报错出现“不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移量。”

    最近在做C 上位机wifi通信的时候使用了MangedWifi库 但这个库并没有想象中好用 遇到了不少问题 首先网上流传的例程又不能运行 再接着当wifi断开或连接时会异常退出的bug 通过反反复复的调试后 我最终确认了错误的来源 发现是M
  • 微信公众号 config:fail,Error: 系统错误,错误码:1

    微信公众号开发 微信开发者工具 打开调试模式 出现config fail Error 系统错误 错误码 1 查看一下wx config是否成功渲染了 重新赋值 修改后的代码如下 chooseImage var this this 新增代码块
  • 生产环境lvm磁盘扩容!!!

    一次就好 亲身体验生产环境lvm磁盘扩容 这一天体验了真正的生产环境 三急 中午客户打电话说报表几个小时没更新了 是不是你们系统有问题啊 于是开始排除发现磁盘空间满了 需要进行扩容 咱又没有扩容经验潜心研究一下午 终于得出结论 以下将描述我
  • 如何将计算机的硬盘分割,电脑硬盘如何快速分区

    电脑硬盘一般有2个盘或者4个盘 怎样自己增添一个硬盘 或者来均分电脑那300G或者500G的硬盘空间呢 今天学习啦小编给大家介绍下电脑硬盘如何快速分区吧 电脑硬盘快速分区方法一 1 点击我的电脑 点击鼠标右键 选择管理项 2 打开后选择磁盘
  • Python基础教程,Python入门教程(非常详细)

    Python 英文本意为 蟒蛇 直到 1989 年荷兰人 Guido van Rossum 简称 Guido 发明了一种面向对象的解释型编程语言 后续会介绍 并将其命名为 Python 才赋予了它表示一门编程语言的含义 图 1 Python
  • C# TCPclient 服务器保持长连接的一种办法(变相的心跳包功能)

    本文章向大家介绍C TCPclient 服务器保持长连接的一种办法 变相的心跳包功能 主要包括C TCPclient 服务器保持长连接的一种办法 变相的心跳包功能 使用实例 应用技巧 基本知识点总结和需要注意事项 具有一定的参考价值 需要的
  • neo4j从安装到远程访问一气呵成

    从安装到远程访问配置 安装Java JDK JDK下载 JDK配置环境 安装Neo4j Neo4j下载 系统变量设置 通过控制台启动 Neo4j 注册 Neo4j 服务 启动 Neo4j 服务 停止 Neo4j 服务 重启 Neo4j 服务
  • 【千律】C++基础:类的派生与继承

    include
  • postman环境设置

    本来是想在另一篇博客基础上接着写的 但是考虑到不想搞太长 干脆分开写 看起来更直接清楚一下 使用postman调接口 经常会遇到不同的的环境 但是接口是一样的 不想添加太多没用的请求 因为除了同一个接口请求要写多遍 更重要的是环境地址和端口
  • gprmax3.0安装、GPU加速(cuda)配置、通过python使用gprmax的问题

    gprmax3 0安装 GPU加速 cuda 配置 通过python使用gprmax的问题 一 安装过程 二 通过NVIDIA CUDA使用GPU加速功能 三 通过VS2019或VScode操纵gprmax 鉴于网上其他教程版本较低 本篇记
  • 【GD32篇】驱动AD7616完成数据采集

    1 AD7616介绍 1 1 概述 AD7616 是一款 16 位 DAS 数据采集系统 支持对 16 个通道进行双路同步采样 AD7616 采用 5 V 单电源供电 可以处理 10 V 5 V 和 2 5 V 真双极性输入信号 同时每对通
  • 代码随想录算法训练营第三天

    今天是算法训练营的第三天 写了454 四数相加 II这道题目 力扣链接 代码随想录链接 代码如下 class Solution def fourSumCount self nums1 List int nums2 List int nums