标签:tin out contains ann line sum 必须 str printf
给定一个数组
number\(_i\),找到两个数,使得他们的和为一个给定的数值 target。
其中:
number[index\(_1\)]+number[index\(_2\)]==target。
注意:index\(_1\)必须小于index\(_2\)且不能为0。
假设每一组输入只有唯一的一组解。
例如:
对于数组[2,7,11,15] 和 target=18,index\(_1\)的值为 2,index\(_2\)的值为 3。
第一行输入一个整数 n (1≤n≤500),接下来的两行分别输入 n 个整数组成的
数组 number\(_i\) (0 ≤ number\(_i\) ≤1000) 和一个整数 target (0 ≤ target ≤ 1000)。
输出一行由空格分隔的两个整数 index\(_1\) 和 index\(_2\)。
注意,下标从 1 开始。
package javaexam;
import java.util.HashMap;
import java.util.Scanner;
public class TwoSum
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int target;
int[] num = new int[n];
HashMap map = new HashMap();
for(int i = 0; i < n; ++i)
{
num[i] = input.nextInt();
}
target = input.nextInt();
for(int i = 0; i < n; ++i)
{
if(map.containsKey(target - num[i]))
{
// HashMap 搜索时间复杂度为O(1)
System.out.printf("%d %d", map.get(target - num[i]), i + 1); // printf格式化输出函数
break;
}
map.put(num[i], i + 1);
}
}
}
4
2 7 11 15
18
2 3
标签:tin out contains ann line sum 必须 str printf
原文地址:https://www.cnblogs.com/narisu/p/9057879.html