Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 阵列最小异或路由的可能线性时间算法_Algorithm_Language Agnostic_Greedy - Fatal编程技术网

Algorithm 阵列最小异或路由的可能线性时间算法

Algorithm 阵列最小异或路由的可能线性时间算法,algorithm,language-agnostic,greedy,Algorithm,Language Agnostic,Greedy,我是在一家大公司的技术面试中被问到这个问题的。 我可以得到一个基本的暴力强迫解决方案,但被要求找到一个更好的解决方案(O(n)),因为n被告知在50万以内 给定一个正数的整数数组(p1,p2,…pn),任务是找到从第一个数到最后一个数的最小成本路径。路由开销定义为通过数组的XOR的总和。例如,如果路由是p1、p4、p6、p10,那么路由成本是(p1 xor p4)+(p4 xor p6)+(p6 xor p10)。允许重访任何号码。我们必须找到从p1到pn的最低成本路线。(n我们有一个三角形不等

我是在一家大公司的技术面试中被问到这个问题的。 我可以得到一个基本的暴力强迫解决方案,但被要求找到一个更好的解决方案(O(n)),因为n被告知在50万以内


给定一个正数的整数数组(p1,p2,…pn),任务是找到从第一个数到最后一个数的最小成本路径。路由开销定义为通过数组的XOR的总和。例如,如果路由是p1、p4、p6、p10,那么路由成本是(p1 xor p4)+(p4 xor p6)+(p6 xor p10)。允许重访任何号码。我们必须找到从p1到pn的最低成本路线。(n我们有一个三角形不等式

(a XOR b) <= (a XOR c) + (c XOR b) for all a, b, c >= 0,
(a或b)=0,
这可以通过对位位置求和直接证明,或者通过观察我们可以在L1空间中嵌入XOR作为度量,其中与
a
对应的点的
i
第维度是
2^i
,如果
a
的二进制表示中的对应位是
1
,如果响应位为
0


因此,最好的路径直接从第一个元素到最后一个元素,没有中间站。

如果“给定一个正数的整数数组(p1,p2,…pn),任务是找到从第一个数字到最后一个数字的最小成本路径”,这是什么意思?pn?这只是数组末尾的整数(如此长度n)和a(现代)编程语言你可以得到一个数组的长度/大小。那么这个问题中未知的是什么/缺少什么?@NorbertvanNobelen这个问题很简单,我用一个例子来更新这个问题。我们必须找到从p1到pn的最小成本路径,选择任意数量的跳数。路径的成本是两个numb的xor的总和每一个跳跃的跳跃者。如果它仍然不清楚,我很抱歉。这个例子将清楚地说明。xor满足三角形不等式,那么为什么不直接从第一个跳跃到最后一个?(这是一个糟糕的面试问题顺便说一句)我投票结束这个问题,因为这是一个关于hackerrank的持续竞争。