暴力迫使twosum算法

时间:2017-02-16 03:01:16

标签: java algorithm

两个问题是:

给定nums = [2,7,11,15],target = 9,因为nums [0] + nums [1] = 2 + 7 = 9,返回[0,1]。

我正在学习java,而且我正在经历一些leetcode问题。在我编写效率代码之前,我试图想出一个强力解决方案,但我的代码似乎不会编译:

public class TwoSum 
{
//static int[] arraynums = new int[]{2, 7, 11, 15};
//static int target = 9;

//public static void main(String args[])
//{
    //TwoSum name = new TwoSum();
    //name.twoSums(arraynums, target);
//}
    public int twoSums(int[] nums, int target) 
    {
        int sum = 0;

        for (int i = 0; i < nums.length; i++)
        {
            for (int j = 0; j < nums.length; j++)
            {   
                sum = nums[i] + nums[j];
                if (sum == target)
                {
                    System.out.println(i + " " + j);
                    return new int[] {i,j};
                }

            }
        }
        return new int[] {};
    }
}

我知道我需要一份回复声明,但我不确定应该返回什么,而且我也不确定我的主要方法是否必需。

4 个答案:

答案 0 :(得分:0)

对于leetCode,您只需完成代码即可,无需添加主函数。

对于 twoSum 方法,您需要返回类型为 int 数组,其中包含元素索引。

你可以这样测试:

    public static void main(String args[]) {
    int[] testData = {2, 7, 11, 15};
    int target = 9;
    TwoSum ts = new TwoSum();
    int[] result = ts.twoSum(testData, target);
    for (int i = 0; i < result.length; i++) {
        System.out.println(result[i]);
    }
}

答案 1 :(得分:0)

@Alfabravo是对的。你需要返回一个整数数组。如果你不想退货。只需使用

 public void twoSum(int[] nums, int target)

答案 2 :(得分:0)

你走在正确的轨道上!

关于添加return语句,只需在println语句之后添加它。

...
System.out.println(i + " " + j);
return new int[] {i,j};
...

虽然您需要检查ij是否不相同,因为它们会指向nums中的相同数字。 除非不是问题的要求。如果是,你可以添加像

这样的东西
if (sum == target && i != j)
祝你好运。

答案 3 :(得分:0)

public class Solution {
    public int[] twoSum(int[] num, int target) {
    // Take an array and the target number as parameter
    // Initialize the variables
        int length = num.length;
        int index1 = 0;
        int index2 = 0;
        int i;
        int j;
        for (i=0; i<length; i++) {
        // First loop, i starts at num[0] which is the first element in array
            for (j=i+1; j<length; j++){
            // Second loop, j starts at num[1], the second element
                if (num[i] + num[j] == target){
                // If they are equal return the index
                    index1 = i;
                    index2 = j;
                }
            }
        }
        // The result should be an array contains 2 indices
        int[] result = new int[] {index1, index2};
        return result;
    }
}

遍历每个元素x并查找是否存在另一个等于target-x的值。