设计一种算法来检查k个整数是否与给定集合中的x相加

时间:2012-01-27 23:16:54

标签: algorithm

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

1 个答案:

答案 0 :(得分:3)

  1. 对数组进行排序
  2. 取k个数字的组合(所有n ^(k-1)个)
  3. 对于每个组合,检查x-sum(组合)是否在数组中(二进制搜索,O(log(n))。
  4. 最终复杂性: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。