无法表示为子数组之和的最小正值 JavaScript

javascriptweb developmentobject oriented programming更新于 2025/10/24 22:04:17

我们有一个像这样的正整数排序数组 −

const arr = [1, 3, 6, 10, 11, 15];

我们需要编写一个函数,比如 findSmallest(),它接受一个这样的数组并返回无法表示为原始数组中某个子数组之和的最小正整数。

例如 −

对于上面写的这个数组,2 是无法通过对原始数组的任何子数组求和得出的最小正整数。所以,现在让我们为这个函数编写代码。由于数组是排序的,我们可以在线性时间内解决这个问题。我们最初认为所需的数字是 1,因为 1 是它可以取的最小值我们将迭代数组并不断将相应元素添加到所需的数字中。

如果在任何迭代中,相应的数字恰好大于所需数字,则意味着我们找到了所需的数字,否则我们继续迭代。

示例

const arr = [1, 3, 6, 10, 11, 15];
const findSmallest = arr => {
   let res = 1;
   for(let ind = 0; ind < arr.length && arr[ind] <= res; ind++){
      res += arr[ind];
   }
   return res;
};
console.log(findSmallest(arr));

输出

控制台中的输出将是 −

2

相关文章


有用资源