当前位置: 首页 > 知识库问答 >
问题:

数组中任意k个元素的数之和

孙志
2023-03-14

设计一个算法,给定一组n个整数和另一个整数x,确定是否存在k(n

我一直在为面试做准备,我遇到了这个算法。我已经解决了问题中指定k的问题。比如2或3。但是我找不到任何可能存在的k的答案。我尝试过用动态规划来解决它,但没有得到结果。有人能帮我吗?

共有1个答案

吕岳
2023-03-14

您可以创建一个大小为xint数组cnt,然后遍历集合,并标记可到达的点。除了元素0被设置为零之外,cnt的所有元素最初都被设置为-1

S的每个元素si重复相同的过程:对于cnt位置i的每个非负元素,检查元素cnt[i si](如果它在数组的边界内)。如果是,则将其设置为cnt[si i]=max(cnt[i]1,cnt[si i])

检查完S的所有元素后,请选中cnt[x]。如果设置为两个或多个,则在S中存在两个或多个元素的组合,加起来就是x

该算法是伪多项式算法,运行时间O(x*| S |)

 类似资料:
  • 我需要找到数组中的一个元素和数组的k个元素的集合之间的距离的最小和,不包括那个索引。 例如: arr = {5,7,4,9} k = 2 min_sum(5)=|5-4||5-7|=3 min_sum(7) = |7-9| |7-5| = 4 min_sum(4) = |4-5| |4-7|= 4 min_sum(9) = |9-7| |9-5|= 6 因此,一个朴素的解决方案是从数组的每个元素中

  • 本文向大家介绍交换数组的第k个元素-JavaScript,包括了交换数组的第k个元素-JavaScript的使用技巧和注意事项,需要的朋友参考一下 我们需要编写一个JavaScript函数,该函数接受一个Numbers和一个数字数组,例如k(k必须小于或等于数组的长度)。 并且我们的函数应该从数组末尾的第k个元素开始替换第k个元素。 示例 以下是代码- 输出结果 以下是控制台中的输出-

  • int main(void) { int array[201]; int i; for (i = 0; i < 201; i++) array[i] = i; return 0; } 技巧 在gdb中,如果要打印数组中任意连续元素的值,可以使用“p array[index]@num”命令(p是print命令的缩写)。其中index是数组索引(从0开始计数),num是连

  • 我有一个问题,试图实现一个算法使用分而治之。 给定一个未排序的数组tv[]查找该数组的de v[k]元素,就好像该数组已排序,但没有对数组v排序一样。 例如,如果k=3且v={2,-1,-6,7,4},则该数组的k元素为2。 因为我无法编辑传递的数组,所以我无法想出另一种方法来对数组进行排序,而不将其保存在另一个局部变量上,或者尝试像快速排序一样分割数组,并返回v的最后一个元素的位置。 如果有帮助

  • 如果给定的和等于数组中任意两个元素的和,函数需要返回true;否则函数需要返回false。

  • 我有2个输入 预期输出: 我无法解决它。所以,请不要问我的解决方案。请用java帮助解决。