|
|
1
8
假设一个位数组都是1。任何解决方案都需要在声明数组已分区之前检查数组中的每一位。检查每一点都需要线性时间。 |
|
|
2
8
这是不可能的。在不到线性的时间内完成这项工作意味着您不会查看每个数组元素(就像二进制搜索一样)。但是,由于不查看数组中的任何元素就无法知道它是什么,因此必须至少查看每个数组元素一次。 你可以使用查找表来加快速度,但是O(n/8)仍然是O(n),所以要么面试官错了,要么你误解了问题。 |
|
|
3
3
如果你有足够的内存,它可能比线性时间更快,可以在O(1)中完成
使用您的示例,在索引341(101010101)处存储值496(11111 0000)。 |
|
4
2
也许这种混乱来自于“线性时间不足”。例如,这个解决方案计算位的数量,这使得一个掩码包含那么多位。当有未计数的位时,它只计数位:
即使这样可以最小化要计数的位数,它仍然是线性的。所以,如果这就是所谓的“次线性”的意思,那就对了。
|
|
|
5
2
从技术上讲,您可以将阵列的每个元素发送到单独的处理器,然后在不到线性时间内完成。如果你有N个处理器,你甚至可以在O(1)时间内完成! |
|
|
6
1
正如其他人所说,我不相信这能在少于线性时间内完成。对于线性时间解决方案,您可以使用STL算法代替自己的循环,如下所示:
|
|
|
7
0
好。。它可以做'小于线性'的时间(厚脸皮的方法)。
|
|
|
8
0
对我来说,最可能的解释是:
|
|
|
9
0
如果您假设并行度的增长速度比问题大小的增长速度慢,那么在并行处理器之间分割这项工作的代价是N/M(或O(N))。在过去的十年左右,并行性(通过GPU)比典型的问题规模增长得更快,而且这一趋势在未来几年内还将继续。对于一类广泛的问题,假设“无限并行性”或者更准确地说,“并行性大于任何预期的问题大小”是有指导意义的,因为随着时间的推移,gpu和云计算的进步提供了这样一种东西。 假设无限平行 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |