欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > LeetCode 1-两数之和

LeetCode 1-两数之和

2025/4/2 13:58:27 来源:https://blog.csdn.net/qq_43641535/article/details/139875258  浏览:    关键词:LeetCode 1-两数之和

LeetCode第1题 两数之和

给定一个整数数组 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
只会存在一个有效答案

进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?

1. 我的解答:O(n^2)

class Solution {public int[] twoSum(int[] nums, int target) {int len = nums.length;int[] answer = new int[2];for(int i=0;i<len-1;i++){for(int j=i+1;j<len;j++){if(nums[i]+nums[j]==target){answer[0]=i;answer[1]=j;}}}return answer;}
}

在这里插入图片描述

2. 进阶解答

在这里插入图片描述
由于哈希表为空,不可能找到与第一个数匹配的数字,所以先将第一个数字和对应的下标放入哈希表,因为map没有直接得到key的方法,所以将要返回的index作为values存储,数字作为key存储,然后从第二个数开始遍历,如果哈希表中存在key满足与当前数相加为目标数,直接返回当前下标与哈希表中那个数对应的values。不然将数字和下标放入哈希表,开始下一轮循环。

class Solution {public int[] twoSum(int[] nums, int target) {int len = nums.length;Map<Integer,Integer> hashMap = new HashMap<>(len-1);hashMap.put(nums[0],0);for(int i=1;i<len;i++){if(hashMap.containsKey(target-nums[i])){return new int[]{i, hashMap.get(target-nums[i])};}hashMap.put(nums[i],i);}return null;}
}

3. 常用map方法

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词