两项LeetCode问题:蛮力解决方案不起作用?

时间:2019-10-20 18:24:37

标签: java arrays

给出一个整数数组,返回两个数字的索引,以便它们加起来成为一个特定的目标。

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

示例:

给出数字= [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]。

我看不到自己在做错什么,我已经查看了解决方案以及其他人发布的内容,然后我明白了。但是我正试图专门找出上面的代码出了什么问题。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

在上述蛮力方法中,i == j是不正确的解决方案,因为数组的两个元素必须不同。我应该从0到nums.length,j应该从i + 1到nums.length。

答案 1 :(得分:0)

您可以执行以下操作:

public class Test {
    public static void main(String args[]) {
        int[] arr = { 2, 7, 11, 15 };
        int target = 9;
        int[] solution = twoSum(arr, target);
        if (solution!=null)
            for (int n : solution)
                System.out.print(n + "\t");
    }

    public static int[] twoSum(int[] nums, int target) {
        int[] solution = new int[2];
        for (int i = 0; i < nums.length; i++) {
            for (int j = 0; j < nums.length; j++) {
                if (i == j) 
                    continue;
                if (nums[i] + nums[j] == target) {
                    solution[0] = nums[i];
                    solution[1] = nums[j];
                    return solution;
                }
            }               
        }       
        return null;
    }
}

输出:

2   7

答案 2 :(得分:0)

从技术上讲,您的问题在def aa(x): return x - np.mean(x) file.groupby(["City"]).agg({"Wind direction":[np.mean, aa], "Temperature":["mean", aa]}) ,您需要使其像j = j++;。参见here