给定一个整数数组,返回两个数字的索引,使它们相加达到特定目标。
您可以假设每个输入都有一个解决方案,并且您不能两次使用相同的元素。
示例:
给定 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]。
我看不出我做错了什么,我查看了解决方案以及其他人发布的内容,我明白了。但我想具体找出上面的代码有什么问题。
如有任何帮助,我们将不胜感激。
最佳答案
在上面的强力方法 i==j 不是正确的解决方案,因为数组的两个元素必须不同。 i 应该从 0 到 nums.length,j 应该从 i+1 到 nums.length。
关于java - LeetCode 的二和问题 : Brute force solution approach not working?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58475999/