给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,2,4], target = 6 输出:[1,2] 示例 3: 输入:nums = [3,3], target = 6 输出:[0,1]
解题思路:题目来源是力扣第一题,我还记得热评是:有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。言归正传,这道题其实直接无脑用两个for循环嵌套一下就能解决,话不多说,直接上代码
import java.util.Arrays;
import java.util.Scanner;
public class ArrayTest1{
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入数组(用逗号隔开):");
String str=input.next();
String[] str1 = str.split(",");
// 改用int数组存储信息,方便下一步操作
int[] num = new int[str1.length];
for (int i = 0; i < str1.length; i++) {
// 将转化为int类型的数字赋值导int类型数组里
num[i] = Integer.parseInt(str1[i]);
}
System.out.println("请输入target值:");
int target=input.nextInt();
System.out.println(Arrays.toString(twoSum(num,target)));
}
/**
*
* @param nums:用户输入的数组
* @param target:用户输入的下标
* @return :返回符合用户要求的下标数组,若无则返回null
*/
public static int[] twoSum(int[] nums, int target) {
//比较n-1轮
for (int i = 0; i <nums.length-1; i++) {
//每轮比较n-i-1次
for (int j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] == target) {
return new int[]{i, j};
}
}
}
return new int[0];
}
}