正方形数字按顺序给出

时间:2011-01-19 06:59:33

标签: algorithm big-o

给定数组中正数的整数序列,但公差为2 例如2 4 6 8 现在用方块替换每个数字。有效地执行计算。 我在一次采访中被问到这个问题并且我使用按位运算符给了他o(n)解决方案,因为它是以2的倍数运算。如果有更好的方法,请建议。

3 个答案:

答案 0 :(得分:4)

我不知道如果它更好但它是递归的! : - )

(n+2)(n+2) = n**2 + 4*n + 4 // and you got n**2

答案 1 :(得分:0)

class Square
{
  public static int[] sequence(int[] array)
  {
    int[] result=new int[array.length];
    for(int i=0;i<array.length;i++)
    {
      result[i]=array[i]*array[i];
    }
    return result;
  }
}

// test cases:
// Square.sequence(new int[]{2,4,6,8})
//out put->{ 4, 16, 36, 64 }

答案 2 :(得分:0)

这取决于面试官,他们认为“正确的事”。如果是我,我认为(n <&lt; 2)+ 4是整洁的,但另一方面,我讨厌在我的代码中看到它。维护需要更多的思考,而优秀的优化者可能会做得很好。

我认为短语“有效地执行操作”可能是我们的线索,即面试官正在寻找快速计算。它仍然是O(n),但是不要忘记当你比较两个O(n)算法时,系数再次开始重要。