import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
public class Numeral {
//main
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("输入数组长度");
int m = in.nextInt(); //输入数组长度
int[] nums = new int[m];
System.out.println("输入数组");
for (int i = 0; i < nums.length; i++) {
nums[i] = in.nextInt(); //输入数组 空格分割
}
System.out.println("输入目标数"); //输入目标数target
int target = in.nextInt();
//调用方法
int end[] = Number(nums, target);
//两个数相同则不是
if (end[0] == end[1]) {
System.out.println("null");
}
else {
System.out.println("这两个数的下标为");
System.out.println(Arrays.toString(end));
}
}
public static int[] Number(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i], i); //添加键(数组的元素) 值(i数组下标)
}
//定义end数组,存放下标值
int[] end = new int[2];
//循环判断
for (int i = 0; i < nums.length; i++) {
//map中是否(需要再次判断)包含(一个数),target-数组中的某个数(另一个数) ,就可以得到两个数
int z = target - nums[i];
if (map.containsKey(z) && i != map.get(z)) {
end[0] = i; //nums[i]数的下标
end[1] = map.get(z); //z数的下标
break;
}
}
return end;
}
}
假设给定一个整数数组“nums“和一个整数目标值 “target“,请你在该数组中找出和为目标值 “target“的那两个整数,并返回它们的数组下标。Map
最新推荐文章于 2024-05-15 11:17:12 发布