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

是否有一个子数组求和到一个目标?

龚承嗣
2023-03-14

热门面试问题:

例如。

Array=[1,3,6,7,8,10]Target=16加到16的子数组是[3,6,7],因此返回true。

共有1个答案

朱毅
2023-03-14

这个是线性时间(C++代码)。

bool Test(const int* arr, int size, int target) {
  if (target < 0) return false;
  int acc = 0;
  int i = 0, j = 0;
  while (acc != target) {
    if (acc < target) {
      if (j == size) break;
      acc += arr[j++];
    }
    else {
      acc -= arr[i++];
    }
  }
  return acc == target;
}

注意,为了保证i<=j的循环不变量,必须对负目标值进行预检查。具体地说,当I==J时,acc将为0,正目标保证命中IF(acc 下的分支。

 类似资料:
  • 这是一个流行的问题,但我找不到一个满足我案例的答案。 我有布尔数组,其中我试着看一个数组是不是另一个数组的子集。 示例: 在本例中,不是两者的子集,但是的子集。 我尝试了一些从布尔的真值创建整数数组的麻烦尝试,但我仍然不确定如何验证它们是按顺序排列的(即一个子集)。 这个也没用。 目标是确定一个数组是否包含另一个数组的所有元素。在这种情况下,将索引4和5作为true,这在中也是true 但是如果我

  • 问题内容: 如何有效地检查整数数组中的所有元素是否是Java中另一个数组的所有元素的子集?例如,[33 11 23]是[11 23 33 42]的子集。提前致谢。 问题答案: 从超集数组中取出一个。检查子集中数组的每个元素是否包含在中。这是非常快速的操作。

  • 我一直在练习算法问题,我遇到了这个问题。 给定一个数组(+VE和-VE),我必须找到一个连续的子数组,这样,和可以被任意数K整除,并且该子数组可能是最大和。对于 和,可被k整除的最大和子数组是 ,目前我所能想到的是,每个元素都有两种可能,要么包含在目标子数组中,要么不包含在目标子数组中。但这将是一个指数算法。 编辑:是否有可能在线性时间内解决这个问题。请帮忙

  • 问题内容: 在SO上已经问过类似的问题,但是它们有更具体的约束,其答案不适用于我的问题。 一般来说,确定任意numpy数组是否是另一个数组的子集的最有效方法是什么?更具体地说,我有大约20000x3的数组,我需要知道完全包含在集合中的1x3元素的索引。更普遍地讲,是否有更Python化的方式编写以下代码: 对于我的用例,我可以安全地假设len(master)<<20000。(因此,可以安全地假设m

  • 我有两个数据框,都包含英文和中文单词字符串,我想知道其中一个是另一个的子集:

  • 我正在尝试编写下一个程序: 仅包含正整数的二维方形数组。每个单元格只能在路径上出现一次,编写一个递归布尔静态方法,该方法接受一个包含数字(大于零)和任何正和的二维mat数组作为参数,该方法作为与mat大小相同的二维数组的参数给出,该方法应检查数组中是否有一个和为和的路径。否则,将返回false值,并使用路径标记路径和和:最初,当路径数组作为参数传递时,其所有单元格在方法末尾包含和,如果mat数组和