Leetcode——给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。(java语言)
2020-07-29 23:43
423 查看
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
这题与之前有说过类似的题,附上链接如下。
剑指offer——输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
这两道题的差异在于,原数组是有序和无序的问题。当数组有序递增时,我们可以使用夹逼的方法去得到角标。那这道题是否可以沿用之前的方法呢? 我先使用 Arrays中发sort方法将数组排序,然后再使用夹逼法去确定角标呢?很明显不太可行,当排序完之后的数组的下角标变化了,而本题是需要返回下角标的值的。
解题思路:已知两个数的和target,肯定是遍历数组nums,判断nums[i] = k时,nums数组中是否存在nums[j] = target - k,然后返回i,j的值即可。要想查找nums数组中是否含有target-k的值,类似的查找,我们可以使用查找复杂度为o(1)的hash表,而返回的是数组的角标,使用key-value键值对,key为nums[i],value为i,所以可以使用hashmap。
代码如下:
private static int[] twoSum(int[] nums, int target) { HashMap<Integer,Integer> hashMap = new HashMap<>(); int[] index = new int[2]; for (int i = 0; i < nums.length; i++) { if (hashMap.containsKey(target-nums[i])) { index[0] = hashMap.get(target-nums[i]); index[1] = i; } else { hashMap.put(nums[i],i); } } return index; }
相关文章推荐
- LeetCode 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- (java)哈希表 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- python练习题---给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- 1.给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍
- 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
- (python)给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的两个整数。
- (java)数组中找出和为目标值的那两个整数,并返回他们的数组下标
- Leetcode:给定一个排序整数数组,找出给定目标值的起始和结束位置。 算法的运行时复杂度必须是O(log n)。 如果数组中没有找到目标,返回[- 1,1]。
- 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
- leetcode:java.T018_4Sum---给定一个整数数组,找出a + b + c + d = target的唯一解,不能有重复元素组
- java每日一题:给定一个整数数组arr和整数target,返回两个索引值,使得这两个索引值对应的整数的和等于target。(arr中有且仅有一组)
- 在数组中找出和为目标值的两个整数,并返回他们的下标
- 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数 例如给定nums = [2,7,11,15],target = 9...
- 二分查找(给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。)
- leetcode-java.T001_TwoSum 给定一个整数数组,找出其中两个数满足相加等于你指定的目标数字
- 只出现一次的数字III(给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。)
- 每日一题:给定一个整数组和一个目标值,找出数组中和为目标值的两个数