当前位置: 首页 > news >正文

两数之和,leetCode热题100,C++实现

题目来源:leetCode

题目链接:1. 两数之和 - 力扣(LeetCode)

题目描述:

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

解法1:

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {int n = nums.size();for(int i = 0;i<n-1;i++){for(int j =i+1;j<n;j++){if(nums[i]+nums[j]==target){return {i,j};}}}return {};}
};

暴力解法,有点像冒泡排序,我们取出其中一个元素,然后再取出另一个元素,直到两个元素的和为target为止,然后我们返回两个元素的下标即可。

解法2:

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int,int> hashtable;for(int i = 0;i<nums.size();i++){auto it = hashtable.find(target-nums[i]);if(it != hashtable.end()){return {i,it->second};}hashtable[nums[i]] = i;}return {};}
};

使用hash进行检测,我们使用it获取当前nums[i]的补数(使用find在哈希表中查找),如果存在,则返回value和i

其中it是pair类型,first存放key,second存放value,想详细了解哈希的可以看我往期博客

C++-哈希Hash_c++ hash<int>-CSDN博客

hashtable[nums[i]] = i;

这句代码的含义是将当前数值作为key,当前索引作为value,存入哈希表中

比如我们用数组nums = [ 2 , 7, 11 , 15 ]

http://www.xdnf.cn/news/1370269.html

相关文章:

  • 链改2.0六方会谈协同创新—可信资产IPO与数链金融RWA双轮驱动
  • 第17章|PowerShell 安全警报——高分学习笔记(运维实战向)
  • 使用Kiro智能开发PYTHON应用程序
  • onnx入门教程(五)——实现 PyTorch-ONNX 精度对齐工具
  • Ubuntu操作系统下MySQL、MongoDB、Redis
  • 基于 LQG 控制的轨迹跟踪 —— 从原理到实践
  • 优雅草黑曼巴知识付费项目交付顺带:深入剖析 WebApp 的封装原理与实践-卓伊凡
  • MD5校验算法
  • FreeRTOS 同步互斥与任务协作 学习笔记
  • vscode或者cursor配置使用Prettier - Code formatter来格式化微信小程序wxss/wxs/wxml文件
  • CentOS 7 升级 OpenSSL 3.5.1 的详细教程
  • HarmonyOS image组件深度解析:多场景应用与性能优化指南(2.4详细解析,完整见uniapp官网)
  • Android 属性 property 系统
  • 微服务的编程测评系统16-用户答题
  • 什么是索引下推?
  • ADB 安装教程:如何在 Windows、 Linux 上安装 Android Debug Bridge
  • 基于CSO与BP神经网络分类模型的特征选择方法研究(Python实现)
  • 2025第五届人工智能、自动化与高性能计算国际会议 (AIAHPC 2025)
  • Android Glide生命周期管理:实现原理与最佳实践
  • swift 开发抠图工具实现思路,与代码详解
  • 技术分享︱国产化突破:开源MDO工具链在新一代神威超算上的安装与调试
  • 使用QML的Rectangle组件的边框属性
  • HMM简单拓展-HSMM与高阶HMM
  • C/C++ 数据结构 —— 树(2)
  • nginx-负载均衡
  • C++工程实战入门笔记4-函数(一)
  • WeakAuras Lua Script ICC (BarneyICC) Simplified Chinese [Mini]
  • 深入了解linux系统—— 线程互斥
  • ArcGIS学习-11 实战-商场选址
  • 洛谷 P12332 题解