如何减少时间复杂性

时间:2012-07-31 04:21:44

标签: algorithm data-structures time-complexity

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

P.S:我知道这不是一个技术问题。但是,请让我知道我该怎么做。

3 个答案:

答案 0 :(得分:6)

关于算法,数据结构,时间和空间复杂性的最佳书籍之一是Introduction to Algorithms。我还建议你阅读以下书籍,以便为面试做好准备:

  1. Cracking the Coding Interview: 150 Programming Questions and Solutions
  2. Programming Interviews Exposed: Secrets to Landing Your Next Job
  3. Programming Pearls

答案 1 :(得分:3)

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

有时,“看到诀窍”的最佳方式是在您使用的算法中查找重复的模式。对于您的示例,请注意您在描述中实际上键入了字符串"A[2] * A[3] ... A[n-1]"两次,因此这是一种思考的地方“我能在算法中只执行一次这样的事情。”

答案 2 :(得分:1)

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

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

下面列出了一些评委: