两数之和问题
问题简介: 有一个数组,需要找出来满足a[i] + a[j] = target的i, j,其中target是指定的数,需要找出满足上面等式的下标i,j
解决方法:暴力求解法
package SumOfTwoNum;
import java.util.Scanner;
public class Solution {
public static int[] findTwoSum(int[] nums, int target) {
int len = nums.length;
//这里是为了利用暴力求解法,遍历所有组合
for(int i = 0; i < len - 1; i ++) {
for(int j = i + 1; j < len; j ++) {
if(nums[i] + nums[j] == target)
return new int[] {i, j};
}
}
throw new IllegalArgumentException("没有满足条件的解");
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数组:(以逗号分隔开)");
//获得输入的数组
String str = sc.nextLine();
//拆分
String[] strs = str.split(",");
int[] nums = new int[strs.length];
//转化
for(int i = 0; i < strs.length; i ++) {
nums[i] = Integer.parseInt(strs[i]);
}
System.out.println("请输入目标数");
int target = sc.nextInt();
int[] solution = findTwoSum(nums, target);
System.out.println("找到的解为:" + "下标" + (solution[0] + 1) + "\t" + "下标" + (solution[1] + 1));
}
}
运行截图
请输入数组:(以逗号分隔开)
5,6,12,4,22,54,13,10
请输入目标数
13
Exception in thread "main" java.lang.IllegalArgumentException: 没有满足条件的解
at SumOfTwoNum.Solution.findTwoSum(Solution.java:16)
at SumOfTwoNum.Solution.main(Solution.java:34)
请输入数组:(以逗号分隔开)
2,6,4,26,5,2,34,7,9
请输入目标数
7
找到的解为:下标1 下标5