所以我尝试解释朋友制作的这个伪代码,我不确定我的方法是否返回了正确的结果。谁能帮助我?
我做过一些测试用例,例如[2,0,7]或[0,1,4]或[0,8,0]的数组将返回true,但不会返回如下情况:[1,7,7]或[2,6,0]
Array(list, d)
for j = 0 to d−1 do
for i = 0 to d−1 do
for k = 0 to d−1 do
if list[j] + list[ i] + list[k] = 0 then
return true
end if
end for
end for
end for
return false
我在java中做到了这一点:
public class One{
public static boolean method1(ArrayList<String> A, int a){
for(int i = 0; i < a-1; i++){
for(int j = 0; j < a-1; j++){
for(int k = 0; k < a-1; k++){
if(Integer.parseInt(A.get(i)+A.get(j)+A.get(k)) == 0){
return true;
}
}
}
}
return false;
}
}
提前致谢
答案 0 :(得分:0)
要解决您的具体问题,请参阅我的评论。编写该代码的一种更好的方法是实际使用Integer
而不是String
的列表,因为您将希望将字符串转换回整数。所以,你的方法看起来像更好:
public static boolean method(List<Integer> A) {
for (Integer i : A)
for (Integer j : A)
for (Integer k : A)
if (i + j + k == 0)
return true;
return false;
}
看到你甚至不需要size参数,因为Java中的任何List
都嵌入了自己的大小。
某种方式offtopic
您可能正在尝试解决以下问题:“查找整数列表是否包含3个不同总和为0的那些”。此问题的解决方案不一定是O(n^3)
,与您的一样,可以在O(n^2)
中解决。请参阅此post。
答案 1 :(得分:0)
好的,所以这就是我认为伪代码试图做的事情。如果列表中存在零,或者列表中有三个数字加起来为零,则返回true。因此,对于以下测试用例,它应该返回true。 (0,1,2,3,4,5),(1,2,3,4,-3)。它将返回false(1,2,3,4,5)。我只是用d = 5作为随机例子。您的代码大部分都是好的 - 您只需要在列表中添加第i个,第j个和第k个元素,以检查它们的总和是否等于真实条件。