我正尝试在LeetCode上进行一次Java模拟面试。我有以下问题:
给定一个整数数组,返回这两个数字的索引,使它们相加为一个特定的目标。
您可以假设每个输入都只有一个解决方案,并且不能使用同一元素两次。
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
我正在尝试实现一个递归解决方案。但是,我在尝试运行我的代码时收到错误。
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] sumnums = nums.clone();
//int[2] sol = {0,1};
int[] sol = new int[]{0,1};
sol = new int[2];
int j=sumnums.length;
int t=target;
for(int i=0;i<sumnums.length;i++){
if ((sumnums[i]+sumnums[j])==t){
sol[0]=i;
sol[1]=j;
//return sol;
}
}
j=j-1;
twoSum(sumnums,t);
return sol;
}
}
错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Solution.twoSum(Solution.java:12)
at __DriverSolution__.__helper__(__Driver__.java:8)
at __Driver__.main(__Driver__.java:54)
在我看来,这个错误可能与以下代码行有关:
if ((sumnums[i]+sumnums[j])==t){
因此,我想知道这是否与语法相关的错误。我正在尝试检查两个数字是否相加为一个不同的数字。
由于这是对递归解决方案的一种天真的尝试,我很乐意接受任何其他批评。但我最关心的是让我在这个问题上的尝试能够与所有测试用例一起运行。
谢谢。
https://stackoverflow.com/questions/51575102
复制相似问题