题目地址:https://leetcode.com/problems/two-sum/
题目:
给定一个整数数组,返回两个数字的索引,使它们相加到特定值。
可以假设每个输入只有一个解决方案,并且不能两次使用相同的元素。
例:
给定nums = [2,7,11,15],target = 9,
因为nums [0] + nums [1] = 2 + 7 = 9,
返回[0,1]。
public class TwoSum {
public static void main(String[] args){
int[] numbers = {1,2,3,4,5,6,7,8,9,10};
int target = 10;
int[] result = TwoSum(numbers,target);
System.out.println(Arrays.toString(result));
}
public static int[] TwoSum(int[] numbers, int target){
Map map = new HashMap<>();
for (int i = 0; i < numbers.length; i++) {
int x = numbers[i];
if (map.containsKey(target - x)){
return new int[] {map.get(target - x)+1, i+1 };
}
map.put(x, i);
}
throw new IllegalArgumentException("No TwoSum Solution!");
}
}
知识点:
1、Map
2、map.containsKey: 如果此映射包含指定键的映射关系,则返回true
3、数组的构造方法:
int[] a = new int[]{1,2,3};//{1,2,3}
int[] b = new int[3];//{0,0,0}
int[] c = {1,2,3} //{1,2,3}
System.out.println(Arrays.toString(new int[]{1,2,3}));//{1,2,3}
4、throw new IllegalArgumentException();