小编Key*_*lug的帖子

面试问题:三个阵列和O(N*N)

假设我们有三个长度为N的数组,它们包含任意数量的类型long.然后给出一个数字M(相同类型),我们的任务是从每个数组中选择三个数字A,BC(换句话说,A 应该从第一个数组中选择,B从第二个数组中选择,C从第三个数据中选择),以使之和A + B + C = M.

问题:我们可以选择所有三个数字并最终得到O(N 2)的时间复杂度吗?


插图:

数组是:

1) 6 5 8 3 9 2
2) 1 9 0 4 6 4
3) 7 8 1 5 4 3
Run Code Online (Sandbox Code Playgroud)

中号,我们已经给出是19.然后我们的选择是从第一个8,从第二个4和从第三个7.

arrays algorithm

47
推荐指数
3
解决办法
6624
查看次数

参考如何在内部实施?

只是想知道它是如何在不同的编译器和调试/发布配置中实现的.标准是否以某种方式提供有关其实施的建议?它在哪里有所不同?

我试图运行一个简单的程序,我已经从函数返回非const引用和指向局部变量的指针,但它的工作方式相同.那么内部引用只是一个指针是真的吗?

c++ pointers reference

28
推荐指数
4
解决办法
9380
查看次数

处理N中的M次出现

问题我是在面试时给出的.我接近解决方案,但不幸的是没有解决它.

假设我们有一个包含N个类型的序列long.并且我们确切地知道,在这个序列中,每个数字确实恰好发生n次,除了恰好出现m次的一个数字(0 < m < n).我们如何通过O(N)运算和O(1)额外内存找到该数字?

对于最简单的情况(当n = 2m = 1时),我们应该做的只是xor按顺序对每个数字执行累加.结果将等于所需的数字.但是我在试图处理任意的mn时陷入困境.

我很欣赏实际的C++解决方案.


编辑:我们先验地知道mn的实际值.

例.我们知道n = 3且m = 2.序列(N = 8)是

5 11 5 2 11 5 2 11
Run Code Online (Sandbox Code Playgroud)

在这种特殊情况下,正确的答案是2,因为它只发生了两次.

c++ arrays algorithm

21
推荐指数
2
解决办法
2133
查看次数

用于比特计数的元程序

我需要C++中的位计数器实用程序,它能够计算数字常量值中最高位的数字,并将此数字表示为编译时常量.

只是为了使一切都清楚 - 一组数值的最重要位数:

 255 => 8   (11111111b)
   7 => 3   (111b)
1024 => 11  (10000000000b)
  26 => 5   (11010b)
Run Code Online (Sandbox Code Playgroud)

我是模板编程的新手,但我认为就是这样.

请提供一些代码示例,任何帮助将不胜感激.

c++ templates metaprogramming

5
推荐指数
1
解决办法
1111
查看次数