我正在尝试解决 Leetcode 上的两个求和算法:
给定一个整数数组,返回两个数字的索引,使它们加起来达到特定目标。您可能会假设每个输入都只有一个解决方案,并且您可能不会两次使用相同的元素。
然后想出了这个:
public class Leet {
public static void main(String[] args) {
System.out.println(Arrays.toString(twoSum(new int[]{1, 2, 3, 4, 5, 6}, 2)));
}
public static int[] twoSum(int[] nums, int target) {
int[] answer = null;
int i = 0;
for (int j = nums[i]; i < nums.length; i++) {
for (int x : nums) {
if (x != j & (j + x) == target) {
int x2 = java.util.Arrays.asList(nums).indexOf(x);
answer[0] = i;
answer[1] = x2;
} else {
return nums;
}
}
}
System.out.println("leet method executed");
return answer;
}
}
问题是它没有返回任何东西,没有打印出的语句。有什么想法吗?
最佳答案
查看一些修复。记住数组初始化和数组中值可以相同的情况。
public class Solution {
public int[] twoSum(int[] nums, int target) {
int[] answer = null;
for(int i=0;i<nums.length;i++) {
int value = nums[i];
for(int j=i+1;j<nums.length;j++) {
int x=nums[j];
if ((value+x)==target) {
answer = new int[2];
answer[0]=i;
answer[1]=j;
}
}
}
System.out.println("leet method executed");
if (answer == null) {
return nums;
}
return answer;
}
}
关于Java求和算法不返回任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45521551/