JAVA基础面试题:快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值。假设数组中的都是各不相等的整数。
这道题看起来很简单,但往往在面试中许多人一下子答不出来。
下面四种实现方式使用相对巧妙的方法来实现上述算法,供参考 。
方法一
1、拿目标值减去循环中的某个数组的元素值。
2、如果元素符合条件,就将下标放入到Map集合中。
public static Map<Integer,Integer> method1(int[] nums, int sum){
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i=0;i<nums.length-1;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[j]== sum - nums[i]){
map.put(i,j);
}
}
}
return map;
}
测试:
int[] nums={54,51,99,81,1,30,70};
int sum = 100;
Map<Integer,Integer> maps1 = method1(nums,sum);
for(Map.Entry<Integer,Integer> entry:maps1.entrySet()){
System.out.println(nums[entry.getKey()]+&#