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