如何解决查找给定时间复杂度的最大输入数据
一个算法需要 0.5 毫秒来处理 100 个输入数据。 求算法时间复杂度为一分钟的最大输入数据
O(nlogn)
解决方法
遵循 OP 的评论
n^n = 2^(12*10^6)
它来自: 0.5/6000 = log2(100^100)/log2(n^n)
将 n^n - 10^12000000
视为等式 [1]
n |
Equation [1] 结果是.. |
下一个 n 应该是.. |
---|---|---|
100 | -ve ( | 更大 |
1000000 | -ve | 更大 |
10000000 | +ve | smaller |
平均值(10^6,10^7)=5500000 | +ve | 较小 |
平均值(10^6,550000)=3250000 | +ve | 较小 |
平均值(10^6,325000)=2125000 | +ve | 较小 |
平均值(10^6,212500)=1562500 | -ve | 更大 |
平均值(212500,1562500)=1843750 | -ve | 更大 |
平均值(212500,1847500)=1984375 | +ve | 较小 |
1914062.5 | +ve | smaller |
1878906.25 | -ve | 更大 |
1896484.375 | -ve | 更大 |
1905273.438 | -ve | 更大 |
1909667.969 | -ve | 更大 |
1911865.234 | +ve | 较小 |
1910766.602 | +ve | 较小 |
1910217.285 | -ve | 更大 |
1910491.943 | +ve | 较小 |
1910354.614 | -ve | 更大 |
1910423.279 | -ve | 更大 |
1910457.611 | -ve | 更大 |
1910474.777 | -ve | 更大 |
1910483.36 | +ve | 较小 |
1910479.069 | -ve | 更大 |
1910481.215 | +ve | 较小 |
1910480.142 | -ve | 更大 |
1910480.678 | +ve | 较小 |
1910480.41 | -ve | 更大 |
在第二行,我尝试 100000 因为 100 (有 2 个 '0's) 导致 10^200 (指数处有 2 个 '0's) 。因此,尝试 1000000(带有 6 个 0)似乎是公平的 12000000(带有 2 个 0)。由于 n 应该更大,我在第三行尝试 10^7。
但在第 4 行及以上,逻辑是在先前确定的边界内找到更大/更小的数字..
我在 1910480.41
处停止,迭代已经振荡。因此计算出的答案是1910480
。
如果我们要测试1910480
是否适合..继续上面的迭代,直到差异(Equation [1]
)/准确度满足最终用户。
如果有什么需要澄清的,请询问。
p/s:如果时间复杂度为 O(n),则删除(编辑)的答案是正确的。顺便说一句,上述方法执行某种Bisection Method。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。