伪代码的正确解释? JAVA

时间:2016-02-13 11:46:44

标签: arraylist nested-loops pseudocode

所以我尝试解释朋友制作的这个伪代码,我不确定我的方法是否返回了正确的结果。谁能帮助我?

我做过一些测试用例,例如[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;
}

}

提前致谢

2 个答案:

答案 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个元素,以检查它们的总和是否等于真实条件。