Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
描述:给出一个整形数组,若数组内任意两个元素相加等于给出的目标结果,则以数组的形式返回该两个元素的数组下标。
可以假设每个输入都只有一个解决方案,且不能使用相同的元素两次。
方法尝试:
利用HashMap, 时间复杂度为O(n)。
解决方法:
static int[] twoSum(int[] numbers, int target) { //1、若target=9,int[] numbers = {2, 7, 11, 15, 34, 5} int[] result = new int[2]; Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (int i = 0; i < numbers.length; i++) { if (map.containsKey(target - numbers[i])) {//3、9-7=2 result[1] = i; result[0] = map.get(target - numbers[i]); return result; } map.put(numbers[i], i);///2、i=0,(2,0) } return result; }