news 2026/8/21 19:04:27

12.15 - 两数之和 两个浮点类型不可以直接判断相等以及解决方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
12.15 - 两数之和 两个浮点类型不可以直接判断相等以及解决方案

目录

1.两数之和

a.核心思想

b.思路

c.步骤

2.两个浮点类型不可以直接判断相等以及解决方案

a.例子1

b.例子2

c.解决方案


1.两数之和

1. 两数之和 - 力扣(LeetCode)https://leetcode.cn/problems/two-sum/description/

class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { // 用于存储数值及其索引的哈希表 unordered_map<int, int> mmap; for(int i = 0; i < nums.size(); i++) { // 计算目标值与当前值的差值 int num = target - nums[i]; if(mmap.find(num) != mmap.end()) { // 如果差值存在于哈希表中,返回结果 return {mmap[num], i}; } // 将当前数值及其索引存入哈希表 mmap[nums[i]] = i; } return {}; } };

a.核心思想

利用哈希表(或字典)存储数组元素值及其下标,通过一次遍历快速查找是否存在满足两数之和为目标值的另一个元素。

b.思路

遍历数组,对于每个元素,计算目标值与该元素的差值,查看差值是否在哈希表中,若在则找到答案;若不在则将当前元素值及其下标存入哈希表,继续遍历。

c.步骤

① 初始化一个空的哈希表。

② 遍历数组nums,对于每个元素nums[i]

  • 计算complement = target - nums[i]

  • 检查complement是否在哈希表中,若在则返回[hash[complement], i]

  • 若不在,将nums[i]作为键,i作为值存入哈希表。

③ 遍历结束若未找到则返回空数组(题目假设有答案,此步可省略异常处理)。

2.两个浮点类型不可以直接判断相等以及解决方案

a.例子1

0.1 + 0.2 == 0.3→ 实际计算可能为0.30000000000000004(二进制浮点表示误差),直接判断不等。

b.例子2

1.0 / 3.0 * 3.0 == 1.0→ 除法后乘法可能因舍入误差导致不等于1。

c.解决方案

用误差范围判断,如abs(a - b) < 1e-9(绝对误差)或abs(a - b) / max(|a|, |b|) < 1e-9(相对误差)。

希望这些内容对大家有所帮助!

感谢大家的三连支持!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 3:51:05

AI驱动音乐创作全流程:从ACE-Step镜像部署到Token商业化运营

AI驱动音乐创作全流程&#xff1a;从ACE-Step镜像部署到Token商业化运营 在短视频、播客和独立游戏爆发式增长的今天&#xff0c;背景音乐的需求量呈指数级上升。然而&#xff0c;专业作曲成本高昂、版权授权复杂、风格匹配困难等问题&#xff0c;长期困扰着内容创作者。一个典…

作者头像 李华
网站建设 2026/8/21 13:43:34

B站视频下载神器BiliDownloader:你的专属离线收藏管家

还在为无法随时重温B站精彩内容而烦恼吗&#xff1f;BiliDownloader作为一款界面精简、操作简单且高速下载的B站视频下载工具&#xff0c;让你轻松将心仪视频收入囊中&#xff0c;实现真正的离线自由。 【免费下载链接】BiliDownloader BiliDownloader是一款界面精简&#xff0…

作者头像 李华
网站建设 2026/8/21 9:54:29

小米运动自动刷步完整指南:3步实现微信支付宝同步

小米运动自动刷步完整指南&#xff1a;3步实现微信支付宝同步 【免费下载链接】mimotion 小米运动刷步数&#xff08;微信支付宝&#xff09;支持邮箱登录 项目地址: https://gitcode.com/gh_mirrors/mimo/mimotion 还在为每天步数不够而烦恼吗&#xff1f;mimotion开源…

作者头像 李华
网站建设 2026/8/21 9:36:18

14、Linux USB OTG与虚拟文件系统详解

Linux USB OTG与虚拟文件系统详解 1. OTG框架示例 USB控制器可能存在不同的配置,收发器部分要么集成在控制器内部,要么通过外部胶合逻辑进行接口连接。因此,OTG框架驱动在很大程度上依赖于收发器与数字控制器的接口方式。下面以 isp1301 为例,介绍其OTG实现,该设备通过…

作者头像 李华
网站建设 2026/8/21 20:27:33

Windows触控板三指拖拽终极指南:从零配置到专家级技巧

Windows触控板三指拖拽终极指南&#xff1a;从零配置到专家级技巧 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersDragOn…

作者头像 李华
网站建设 2026/8/21 14:36:17

18、Linux USB 设备测试与回归工具详解

Linux USB 设备测试与回归工具详解 1. USB 设备测试基础 在测试 USB 设备时,检查其基本协议行为后,下一步就是测试其功能。可以通过与 usbtest 驱动交互来进行测试,相关资源可在以下链接获取: - http://www.linux-usb.org/usbtest/testusb.c - http://www.linux-usb.or…

作者头像 李华