两个问题是:
给定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[] {};
}
}
我知道我需要一份回复声明,但我不确定应该返回什么,而且我也不确定我的主要方法是否必需。
答案 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};
...
虽然您需要检查i
和j
是否不相同,因为它们会指向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的值。