java - LeetCode 的二和问题 : Brute force solution approach not working?

标签 java arrays

给定一个整数数组,返回两个数字的索引,使它们相加达到特定目标。

您可以假设每个输入都有一个解决方案,并且您不能两次使用相同的元素。

示例:

给定 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/

相关文章:

javascript - add、removeFirst、removeFirstN 数组操作的性能优化

ruby - 通过键获取 ruby​​ 哈希值

java - 如何将 java.lang.Appendable 包装到 java.io.Writer 中?

java - 如何使用 Apache POI 读取特定行?

javascript - 在 JavaScript 中将数组排序为 "rows"

c# - "System.ArgumentException: ' 不存在从对象类型 Newtonsoft.Json.Linq.JValue 到已知托管提供程序 native 类型的映射。

Java 2D 数组 : Go through groups of entries and sum their values

java - 如何将文本文件转换为GPX文件?

java - 编译我的代码时找不到符号

java - 如何将 void ** 从 JNI C 代码传递给 C 库?