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

50.两数之和(力扣)

目录

问题描述

核心代码解决

代码思想

时间复杂度和空间复杂度


问题描述

给定一个整数数组 和一个整数目标值 ,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。nums``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]

核心代码解决

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

代码思想

这段代码是一个 C++ 的类定义,实现了一个 Solution 类,其中的 twoSum 方法用于在给定整数数组中寻找两个数,使它们的和等于目标值,并返回这两个数在数组中的索引。

让我解释一下这段代码的功能:

  1. vector<int> twoSum(vector<int>& nums, int target)Solution 类的一个公有方法。它接受一个整数数组 nums 和一个目标整数 target 作为输入,并返回一个整数向量(vector),其中包含两个数的索引,使得它们的和等于目标值。

  2. 通过使用两个嵌套的循环,首先迭代数组中的每个元素 nums[i],然后在内部循环中迭代数组的其余部分,以寻找与当前元素相加等于 target 的另一个元素。

  3. 如果找到这样的两个元素,则返回它们的索引构成的整数向量 {i, j},其中 i 是外部循环的索引,j 是内部循环的索引。

  4. 如果没有找到满足条件的两个数,则最终返回 {i, j},即返回最后一次外部循环和内部循环结束时的索引值,这表示没有找到满足条件的解。

这段代码实现了一个简单的两数之和问题的解决方案。当找到满足条件的解时,它会立即返回;如果没有找到解,它会返回最后一次循环结束时的索引,表示没有找到合适的组合。

时间复杂度和空间复杂度

这段代码的时间复杂度和空间复杂度分别是:

时间复杂度:O(n^2)

  • 代码中使用了两层嵌套循环,外层循环迭代次数为 n-1,内层循环迭代次数从 i+1 开始,最多是 n-1 次。

  • 总体来看,代码中的循环总次数约为 1 + 2 + 3 + ... + (n-1),等差数列求和公式为 (n-1) * n / 2,因此时间复杂度为 O(n^2)。

空间复杂度:O(1)

  • 代码中并没有显式申请额外的数据结构来存储数据,只使用了局部变量 i 和 j 作为循环索引,因此不随输入数据规模的增加而增加空间使用,空间复杂度为常量级 O(1)。  

收获满满,继续加油 

http://www.lryc.cn/news/117544.html

相关文章:

  • k8s基础
  • 【自然语言处理】大模型高效微调:PEFT 使用案例
  • FFmpeg将编码后数据保存成mp4
  • 设置VsCode 将打开的多个文件分行(栏)排列,实现全部显示
  • Vue.js2+Cesium1.103.0 六、标绘与测量
  • 【redis 延时队列】使用go-redis的list做异步,生产消费者模式
  • 激光焊接塑料多点测试全画面穿透率测试仪
  • 用 Uno 当烧录器给 atmega328 烧录 bootloader
  • spring boot策略模式实用: 告警模块为例
  • Camunda 7.x 系列【10】使用 Rest API 运行流程实例
  • Python-OpenCV中的图像处理-边缘检测
  • 一文了解Java序列化和反序列化:对象的存储与传输
  • react-codemirror2 编辑器需点击一下或者延时才显示数据的问题
  • 火山引擎联合Forrester发布《中国云原生安全市场现状及趋势白皮书》,赋能企业构建云原生安全体系
  • 需要数电发票接口的,先熟悉下数电发票基本常识
  • node-sass是什么
  • C语言指针之 进阶
  • C++单例模式
  • C++ 析构函数
  • CSS——字体选择
  • SpringBoot自动装配及run方法原理探究
  • Mybatis实现JsonObject对象与JSON之间交互
  • spring boot 集成 jetcache【基础篇:@Cached、@CreateCache、@CacheRefresh】
  • 个人对前后端分离的一些看法
  • TailWindCss 在Hbuilderx中使用
  • Unity导入图片时,通过设置属性快速实现资源的压缩
  • AlmaLinux 9 安装 Go 1.20
  • 【Docker】数据库动态授权组件在Kubernetes集群下的测试过程记录
  • 数据结构【第3章】——线性表
  • MySql之分库分表