两数之和
2018-05-10 本文已影响16人
Airycode
【链接】https://nanti.jisuanke.com/t/25
【题目】
给定一个数组 numberi,找到两个数,使得他们的和为一个给定的数值 target。
其中:number[index1]+number[index2] == target.
注意:indexx1必须小于indexx2且不能为0,假设每一组输入只有唯一的一组解
例如,对于数组[2,7,11,15]和target=9,indexx1的值为1,indexx2的值为2.
输入格式
第一行输入一个整数 n(1≤n≤500),接下来的两行分别输入 n 个整数组成的数组 numberi(0≤numberi≤1000) 和一个整数 target(0≤target≤1000)。
输出格式
输出一行由空格分隔的两个整数 index1 和 index2。注意,下标从 1 开始。
【代码实现】
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num = input.nextInt();
int array[] = new int[num];
for (int i = 0;i<num;i++) {
array[i] = input.nextInt();
}
int target = input.nextInt();
List<Integer> list = twoSum(array,target);
for (int i = 0;i<list.size();i++) {
System.out.print(list.get(i) +" ");
}
}
private static List<Integer> twoSum(int[] array, int target) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0;i<array.length;i++) {
for (int j = i+1;j<array.length;j++) {
if (array[i] + array[j] == target) {
list.add(i+1);
list.add(j+1);
}
}
}
return list;
}
}