LeetCode 两数之和

给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。

您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素。

更多文章查看个人博客 个人博客地址:twoSum 两数之和 【JAVA实现】

方法一

使用双重循环两两相加判断是否等于目标值

public List<String> twoSum2(int[] arr, int sum) {if (arr == null || arr.length == 0) {return new ArrayList<>();}List<String> list = new ArrayList<>();for (int i = 0; i < arr.length - 1; i++) {for (int j = i + 1; j < arr.length - 1; j++) {if (arr[i] + arr[j] == sum) {// 这里记录的是数组值 也可以记录下标 这里只是为了方便查看结果list.add(arr[i] + "," + arr[j]);}}}return list;}
名称 结果
时间复杂度 O(n^2)
空间复杂度 O(1)

方法二

单层循环 增加hashMap 记录每个数或者记录每个数和目标值的差 来直接比较

public List<String> twoSum(int[] arr, int sum) {if (arr == null || arr.length == 0) {return new ArrayList<>();}List<String> st = new ArrayList<>();Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < arr.length; i++) {// 查看数组中是否存在当前值和目标值差的值if (map.containsKey(sum - arr[i])) {st.add(map.get(sum - arr[i]) + "," + arr[i]);} else {// 记录下元素值map.put(arr[i], arr[i]);}}return st;}public List<String> sum2(int[] nums, int target) {if (nums == null || nums.length <= 0) {return null;}List<String> results = new ArrayList<>();Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {// 检验当前值是否存在于存储的之差中Integer value = map.get(nums[i]);if (value != null) {results.add(nums[value] + "," + nums[i]);}// 记录目标值和当前值差map.put(target - nums[i], i);}return results;}

此方法增加一个空间复杂度,记录的方式可能有多种 都能达到目的,速度优于第一种

名称 结果
时间复杂度 O(n)
空间复杂度 O(n)

更多文章查看个人博客 个人博客地址:twoSum 两数之和 【JAVA实现】

转载于:https://www.cnblogs.com/NiceCui/p/11062581.html

leetCode:twoSum 两数之和 【JAVA实现】相关推荐

  1. [leetcode]1.两数之和

    [leetcode]1.两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应 ...

  2. [hashmap|空间换时间] leetcode 1 两数之和

    [hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...

  3. C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组

    C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...

  4. LeetCode 1. 两数之和

    LeetCode 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入 ...

  5. Java实现 LeetCode 1两数之和

    1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这 ...

  6. 【LeetCode】两数之和

    package leetcode.editor.cn;//给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. // // 你可 ...

  7. 【前端来刷LeetCode】两数之和与两数相加

    大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...

  8. 力扣(leetcode)-1. 两数之和

    描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组 ...

  9. LeetCode 01两数之和02两数相加

    力扣 LeetCode01两数之和 LeetCode02两数之加 前言:第一次LeetCode打卡题解,前面组织的打卡活动从今天开始正式开始了,很多csdn和公众号小伙伴以及加入了,欢迎加入!详细看力 ...

最新文章

  1. mac os 开启redis_Mac下配置Redis服务器(自启动、后台运行) | 学步园
  2. (八)ASP.NET自定义用户控件(1)
  3. Node.js 修复4个漏洞
  4. Factory Pattern工厂模式
  5. 嵌入式开发与单片机开发有什么区别
  6. 模拟登陆webqq总结(二)
  7. msdia80.dll文件出现在磁盘根目录下的解决方案(转)
  8. 电视机关机特效——android
  9. 截止失真放大电路_聊一下三极管截止、放大和饱和3种工作状态
  10. python修改图片尺寸和DPI
  11. html文档定一层的标记,HTML基本结构和常用标记.doc
  12. 中国最火最流行的40个博客网站
  13. R语言 trim=0.1 tirm=0.2 什么意思呢?
  14. php解析word文档
  15. 人工智能,突破你认知的新用途
  16. 「SAP技术」SAP MM MPN物料的采购初探
  17. 烤仔TVの尚书房丨FOMO 情绪笼罩下的 DeFi 坐上了过山车
  18. 在ROS param 的使用中有时无法正确传入参数的问题记录
  19. 初识 MQTT (基于 mosquitto)
  20. 2022Java经典面试题总结(附问题和答案)

热门文章

  1. Today:基于 Electron 和 Vue.js 的 GTD 应用
  2. Istio Pilot源码浅析
  3. Exchange 2003 迁移至 Exchange 2010 完全攻略(二)
  4. 将MPM雪模拟移植到Maya
  5. SSH没有password安全日志
  6. Excel问题汇总!
  7. 稳压二级管原理之详解
  8. python3改变路径出现的SyntaxError问题
  9. opencv-python之机器视觉
  10. 使用pytorch最关键的几个点