小伙伴们,我又来了,今天分享一波求两数之和如何得出两数索引值,两种方法通俗易懂,个人推荐使用map比较快捷就,减少了运行时间,下面是代码:`import java.util.Arrays;
import java.util.HashMap;
public class Test {
//求两数之和得出两数索引值
public static int[] twoSum(int[] nums, int target) {
//方法一 双层for循环
; int[] indexs = new int[2];//创立新的数组以便存储nums索引值
// for (int i = 0; i <nums.length ; i++) {
// for (int j = nums.length-1; j >i ; j–) {
// if (nums[i]+nums[j]==target){
// indexs[0] = i;
// indexs[1] = j;
// }
// }
// }
//方法二
// 建立k-v ,一一对应的哈希表
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i = 0; i < nums.length; i++){ //遍历数组nums
if(map.containsKey(nums[i])){ // 判断map中是否存在nums[i]的值
indexs[0] = i; //如果不存在 将索引值添入indexs中,
indexs[1] = map.get(nums[i]); // 再将map添入数组nums中的值后的索引添入
return indexs;
}
// 将数据存入 key为补数 ,value为下标
map.put(target-nums[i],i);
}
return indexs;
}
public static void main(String[] args) {
int[] nums = new int[]{10,6,2,4};
int[] ints = twoSum(nums, 6);
System.out.println(Arrays.toString(ints));
}
}
如果有更好的方法欢迎分享,祝您学的开心!!!