algorithm - 设计一个算法来检查给定集合中的 k 个整数加起来是否等于 x

标签 algorithm

<分区>

给定一组 n 个整数和一个整数 x。你能设计一个算法来检查给定集合中的 k 个整数加起来是否等于 x 吗? 复杂度应该是 O(n^(k-1) * logn)

最佳答案

  1. 对数组进行排序
  2. 取 k 个数字的组合(所有 n^(k-1) 个)
  3. 对于每个组合,检查 x-sum(combination) 是否在数组中(二进制搜索,O(log(n)))。

最终复杂度:O(n^(k-1) * logn)

如果你有足够的空间 ( n^(k/2) 长度数组,你也可以在 O( n^(k/2) log(n) ) 中完成。

计算总和的复杂度为 O(1),因为您可以重复使用为之前的组合所做的计算。如果您计算了 (a+b+c+d),则 (a+b+c+e) = (a+b+c+d) -d +e。

关于algorithm - 设计一个算法来检查给定集合中的 k 个整数加起来是否等于 x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9041353/

相关文章:

algorithm - 确定数字输入错误的概率

c# - 在服务器上实现 "Search nearby users"功能

algorithm - 检测连接的三角形组

python - 难以解决 O(logn) 中的代码

java - 获得超过 100% 的 Smith-Waterman 计算

algorithm - 高效排序算法的实际重要性

algorithm - 实数的幂运算

java - 特定旅行商变体的实现

algorithm - 最小化分发糖果的步骤

algorithm - 图的最大子图数