leetCode:twoSum 两数之和 【JAVA实现】
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实现】相关推荐
- [leetcode]1.两数之和
[leetcode]1.两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应 ...
- [hashmap|空间换时间] leetcode 1 两数之和
[hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...
- C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组
C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...
- LeetCode 1. 两数之和
LeetCode 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入 ...
- Java实现 LeetCode 1两数之和
1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这 ...
- 【LeetCode】两数之和
package leetcode.editor.cn;//给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. // // 你可 ...
- 【前端来刷LeetCode】两数之和与两数相加
大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...
- 力扣(leetcode)-1. 两数之和
描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组 ...
- LeetCode 01两数之和02两数相加
力扣 LeetCode01两数之和 LeetCode02两数之加 前言:第一次LeetCode打卡题解,前面组织的打卡活动从今天开始正式开始了,很多csdn和公众号小伙伴以及加入了,欢迎加入!详细看力 ...
最新文章
- mac os 开启redis_Mac下配置Redis服务器(自启动、后台运行) | 学步园
- (八)ASP.NET自定义用户控件(1)
- Node.js 修复4个漏洞
- Factory Pattern工厂模式
- 嵌入式开发与单片机开发有什么区别
- 模拟登陆webqq总结(二)
- msdia80.dll文件出现在磁盘根目录下的解决方案(转)
- 电视机关机特效——android
- 截止失真放大电路_聊一下三极管截止、放大和饱和3种工作状态
- python修改图片尺寸和DPI
- html文档定一层的标记,HTML基本结构和常用标记.doc
- 中国最火最流行的40个博客网站
- R语言 trim=0.1 tirm=0.2 什么意思呢?
- php解析word文档
- 人工智能,突破你认知的新用途
- 「SAP技术」SAP MM MPN物料的采购初探
- 烤仔TVの尚书房丨FOMO 情绪笼罩下的 DeFi 坐上了过山车
- 在ROS param 的使用中有时无法正确传入参数的问题记录
- 初识 MQTT (基于 mosquitto)
- 2022Java经典面试题总结(附问题和答案)