8

昨天我参加了一个面试。他给了我几个编程问题要解决。当我解决它们时,面试官说可以以更好的时间复杂度来完成。我非常沮丧,以至于我无法以最佳时间复杂度完成该程序。最后我无法通过面试过程。但我想知道的是,我们如何才能在最佳时间解决任何问题?我应该采取什么方法来达到这种状态?我知道完美的答案是练习。但是我仍然想知道如何以及以什么方式来执行一个程序,以便它在更短的时间内运行并使用最好的内存。我必须读什么书?我要练习什么问题?

PS:我知道这不是技术问题。但请让我知道我该怎么做。

4

3 回答 3

6

关于算法、数据结构、时间和空间复杂性的最佳书籍之一是《算法导论》。我还可以建议您阅读以下书籍,以便为面试做好准备:

  1. 破解编码面试:150 个编程问题和解决方案
  2. 编程面试曝光:找到下一份工作的秘诀
  3. 编程珍珠
于 2012-07-31T04:38:06.290 回答
3

解决这类问题需要练习,再加上“看窍门”。对于这个特定示例,您可能会注意到 ,所有元素相乘的乘积B[i] = P/A[i]在哪里。因此,在这种情况下,O(n) 性能来自首先计算一次(n-1 次乘法),然后计算每个(另外 n 次除法)。PA[i]PB[i]

有时,“看花招”的最佳方法是在您使用的算法中寻找重复的模式。对于您的示例,请注意,在您的描述中,您实际上输入了"A[2] * A[3] ... A[n-1]"两次字符串,所以这是一种思考“我可以在算法中只做一次这件事”的地方。

于 2012-07-31T05:28:10.513 回答
1

阅读大量算法并练习它们。

在线评委解决问题也有助于提高问题解决技能的效率和准确性。

部分评委名单如下:

于 2012-07-31T04:35:02.207 回答