使用Stacks / Queue将代码转换为代码

时间:2016-10-23 21:53:32

标签: java loops stack queue

所以我有以下代码,它检查数组中的元素,看它们是否模数为x(在参数中定义)。

我试图用堆栈或队列重写相同的代码,希望不同的循环,但我在这些数据类型中相当初学者,因此我很难实现它们。

任何帮助都将不胜感激。

    Algorithm Checker (Array A, x)

For i <- 0 to n-1 do
    For j <- i+1  to n-1 do
        If A[i] modulo A[j] equals to x then
            Return A[i] and A[j]
        End If
    End for
    End for

2 个答案:

答案 0 :(得分:1)

我希望我理解你。您使用s1的所有元素填充第一个堆栈A并通过弹出它们来迭代。在此循环中,创建s2作为s1的副本,并通过弹出第一个元素来遍历其元素。然后,您可以比较两个元素。在类似Python的伪代码中,它看起来类似于

s1 = A.toStack # It's pseudocode :-)

while !s1.isEmpty():
    elem1 = s1.pop()
    s2 = s1.copy()

    while !s2.isEmpty():
        elem2 = s2.pop()
        if elem1 % elem2 == x:
            return elem1 == elem2

请注意,为了保持迭代元素的顺序,您必须以相反的顺序填充s1。 Java中的实现取决于您。

答案 1 :(得分:0)

 public int[] AlgoChkr(int A[],int x)
 {      int B[] = new int[A.length];
    int j = 0;
     for(int i = 0; i<A.length ;i++    )
            {   if(A[i]%x ==0)
                    {
                     B[j] = A[i];
                     j++;
                    }
            }
    return B;
 }