JavaScript中無法表示為子陣列之和的最小正值


我們有一個排序的正整數陣列,如下所示:

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

更新於:2020年8月31日

91 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.