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

leetcode1两数之和

题目:

给定一个整数数组 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]

提示:

  • 2 <= nums.length <= 104
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109
  • 只会存在一个有效答案

解决:

解法1:暴力求解

看数组中一个数与数组中其它数的和是不是等于目标值,是就返回结果,不是就继续循环。时间复杂度为O(n^2)。

public int[] twosum(int[] nums,int target) {int[] result=new int[2];for(int i=0;i<nums.length;i++){for(int j=i+1;j<nums.length;j++){if(nums[i]+nums[j]==target) {result[0]=i;result[1]=j;return result;}}}return result;
}

解法2:用HashMap存储每个数对应的下标

改进:减少重复扫描。引用hashmap。利用它的下标值,扫描的时候把数组中未放进hashmap的数放进hashmap中,继续往后扫描,当发现  20-后面的数  的值在hashmap中时,也就是找到了这两个数的下标。时间复杂度为O(n)。

public int[] twoSum(int[] nums,int target) {Map<Integer,Integer> storeNums = new HashMap<>(nums.length,1);int[] result=new int[2];for(int i=0;i< nums.length;i++) {int another=target-nums[i];Integer anotherIndex=storeNums.get(another);if(null!=anotherIndex) {result[0]=anotherIndex;result[1]=i;break;}else {storeNums.put(nums[i],i);}}return result;}

解法3:与解法2类似,存储每个数对应下标

时间复杂度为O(n)。

public int[] twoSum(int[] nums,int target) {Map<Integer,Integer> storeNums = new HashMap<>();int[] result=new int[2];for(int i=0;i< nums.length;i++) {int another=target-nums[i];if(storeNums.containsKey(nums[i])) {int anotherIndex=storeNums.get(nums[i]);result[0]=anotherIndex;result[1]=i;break;}else {storeNums.put(target-nums[i],i);}}return result;}

加油加油^_^

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

相关文章:

  • 近年GDC服务器分享合集(四): 《火箭联盟》:为免费游玩而进行的扩展
  • android反射详解
  • Python 反射和动态执行
  • 计算机网络常见端口号
  • SpringBoot / Vue 对SSE的基本使用(简单上手)
  • Qt串口基本设置与协议收发
  • interview3-微服务与MQ
  • kafka详解一
  • Flutter yuv 转 rgb
  • MySQL——子查询
  • Java学习笔记---多态
  • 2023-09-10 LeetCode每日一题(课程表 II)
  • 合并区间【贪心算法】
  • 2023,软件测试人的未来在哪里?
  • Python中的Numpy向量计算(R与Python系列第三篇)
  • LeetCode刷题笔记【27】:贪心算法专题-5(无重叠区间、划分字母区间、合并区间)
  • nvidia-smi 命令详解
  • fork()函数的返回值
  • Stable Diffusion WebUI挂VPN不能跑图解决办法(Windows)
  • Android的本地数据
  • android NDK 开发包,网盘下载,不限速
  • 【每日一题Day320】LC2651计算列车到站时间 | 数学
  • C语言柔性数组详解:让你的程序更灵活
  • Redis-带你深入学习数据类型list
  • react拖拽依赖库react-dnd
  • win10环境安装使用docker-maxwell
  • Docker部署RabbitMQ
  • 23个react常见问题
  • 【python基础】——Anaconda下包更新的坑及安装与卸载、及安装后Jupyter Notebook没反应的解决方法
  • CSS 中的 display 和 visibility