【发布时间】:2010-11-18 11:11:49
【问题描述】:
给定一个大小为 100000 的数组 arr,每个元素 0 <= arr[i] < 100。 (未排序,包含重复)
找出有多少个三元组(i,j,k) 存在这样arr[i] ^ arr[j] ^ arr[k] == 0
注意:^ 是 Xor 运算符。还有0 <= i <= j <= k <= 100000
我觉得我必须计算频率并使用频率进行一些计算,但我似乎无法开始。
欢迎任何比显而易见的O(n^3) 更好的算法。 :)
这不是家庭作业。 :)
【问题讨论】:
-
只是好奇....如果不是作业,那是什么?
-
面试题呢?如果没有,你能解释一下这将用于什么 - 我现在想不出一个应用程序吗?
-
这是 Project Euler 310 :),成功解决了一半的问题...顺便说一句,我们所说的 O(n^3) 正在运行 :)
-
从 0 到 99 的三个值的组合只有 100000 种。你的数组有 100000 长。也许巧合,即使不是,我也不确定它有什么帮助。此外,条件等价于 arr[i] ^ arr[j] == arr[k]。也看不出这有什么帮助:)
-
@Paul,实际上是 74...不是 100...我只是想让数字保持四舍五入。