【发布时间】:2012-06-22 13:12:24
【问题描述】:
这是一道面试题。
给定一个数字 n,找出在 0...n 范围内有多少个数字为 2 的数字
例如,
输入 = 13 输出 = 2(2 和 12)
我给出了通常的 O(n^2) 解决方案,但有没有更好的方法。
是否有任何“技巧”公式可以帮助我立即得到答案
【问题讨论】:
-
O(n²)?如果你的意思是,生成数字并检查数字,那就是 O(n lg n),因为每个数字 n 都由 O(lg n) 个数字表示。
-
这是一个排列问题..
-
@FredFoo 每个数字由 log10(n) 位表示,所以它是 O(nlog10(n)) (以 10 为基数的位数是 log10(n))
标签: algorithm