【发布时间】:2020-02-16 22:26:43
【问题描述】:
给定一个整数数组,返回两个数字的索引,使它们相加为特定目标。
您可以假设每个输入都只有一个解决方案,并且您不能两次使用相同的元素。
例子:
给定 nums = [2, 7, 11, 15],目标 = 9,
因为 nums[0] + nums[1] = 2 + 7 = 9, 返回 [0, 1]。
我正在尝试一种蛮力方法来解决这个问题——使用整数 i 遍历数组的每个元素,并使用另一个整数 j 将不相同的索引添加到位置 i 处的整数。我相当确定我的方法是正确的,但我无法正确地得到这个 java 实现。
class Solution {
public int[] twoSum(int[] nums, int target) {
int sum;
int[] Solution = new int[2];
outerloop:
for (int i=0; i<nums.length; i++) {
for (int j=0; j<nums.length; j++) {
if (i == j) {
j = j++;
sum = nums[i] + nums[j];
if (sum == target) {
System.out.println(sum);
Solution[0] = i;
Solution[1] = j;
break outerloop;
}
}
else {
sum = nums[i] + nums[j];
if (sum == target) {
Solution[0] = i;
Solution[1] = j;
break outerloop;
}
}
}
}
return Solution;
}
}
所以当我编译和使用数组:[2,7,11,15] 和 target = 9 时,上述方法有效。但是当你尝试:[3,2,4] 和 target = 6 时,它错误地返回解决方案= [0, 0]。
我看不出我做错了什么,我查看了解决方案以及其他人发布的内容,我明白了。但是我正在尝试专门找出上面的代码有什么问题。
任何帮助将不胜感激。
【问题讨论】:
-
这个问题不适合 StackOverlow。也许 codereview 交换会更合适!?