TwoSums代码仅返回[0,0]

时间:2017-10-24 00:36:31

标签: java for-loop if-statement return

我正在练习编码问题而且我不确定为什么我的代码不起作用(我知道它的编写效率不高:/)

给定一个数组和一个目标数字,返回数组中两个数字的索引,它们加起来就是目标数字。示例:nums = [2,7,11,15],target = 9,

因为nums [0] + nums [1] = 2 + 7 = 9, 返回[0,1]。 (指数必须是差异)

class Solution {
public int[] twoSum(int[] nums, int target) {
    for (int i = 0; i < nums.length; i++)
    {
        if (nums[i] <= target)
        {
            for (int j = i; j < nums.length; j++)
            {
                System.out.print(nums[i]); 
                if (nums[i] + nums[j] == target)
                {
                    return new int[]{i, j};
                }
            }
        }

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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

正如您所提到的,如果两个数字必须不同,则必须在j中开始迭代i + 1

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