作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在测验中被问到以下问题,当提示我设计更高效的代码段时,我不知道该问自己什么。我的意思是我知道 if-else 很耗时,我在想也许是一个 for 循环?我很好奇是否有人可以 A. 告诉我是否只有 1 个答案,然后 B. 告诉我为什么解决方案运行得如此之快。
它说:假设下面的代码段非常耗时,编写一段代码至少可以节省 2 分钟的运行时间。
if (f(n)%==0)
key = 3*f(n)+4*f(n)+7;
else
key = 6*f(n)*f(n)-33;
最佳答案
“我的意思是我知道 if-else 很耗时,我在想也许是一个 for 循环”这是不正确的。考虑一下这里发生的事情实际上很耗时。提示:f(n)
可以做很多事情。但是如果代码需要很长时间来处理,那么唯一最好的选择就是 f(n)
是罪魁祸首。这里发生的唯一另一件事是一个快速的 if 语句
和一些算术(计算机在这方面非常快)。
幸运的是,您正在多次计算固定输入 n
的 f(n)
!通过将此方法的输出保存在变量中然后仅使用该变量来省去麻烦。我不知道你或你的老师从哪里得到“2 分钟”,在我看来这是胡说八道。
关于java - 时空权衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28966501/
我是一名优秀的程序员,十分优秀!