JavaScript 程式:計算和小於給定值的三個數的組合


我們將編寫一個 JavaScript 程式來計算和小於給定值的三個數的組合的數量。這個問題可以透過對陣列進行排序並使用兩個指標來檢查可能的組合來解決。首先,我們將陣列按升序排序,然後,對於陣列中的每個元素,我們將使用兩個指標來檢查和小於給定值的三個數的組合。此類組合的數量將是我們跟蹤的計數。

此外,我們將根據三個數的和小於或等於給定值來更新計數和指標。這樣,我們就可以在 O(n^2) 的時間複雜度內有效地解決問題。對於將來需要查詢滿足特定條件的某些組合的數量的問題,這是一個非常有用的技巧。

最後,我們將返回和小於給定值的此類三個數的組合的數量。

方法

  • 首先,將給定的數字陣列按升序排序。

  • 初始化三個變數:left、right 和 count。

  • 然後使用雙指標方法,左指標從 0 開始,右指標從末尾開始。

  • 對於每次迭代,計算當前三個數的組合的和(左指標指向的元素 + 右指標指向的元素 + 當前元素)。

  • 如果和小於給定值,則遞增計數器和左指標。

  • 如果和大於給定值,則遞減右指標。重複此過程,直到左指標小於右指標。

示例

這是一個完整的 JavaScript 程式示例,用於計算和小於給定值的三個數的組合的數量:

function countTriplets(arr, sum) {
   let count = 0;
   arr.sort((a, b) => a - b); 
   // sorting the array in ascending order
   for (let i = 0; i < arr.length - 2; i++) {
      let left = i + 1;
      let right = arr.length - 1;
      while (left < right) {
         if (arr[i] + arr[left] + arr[right] >= sum) {
         right--;
         } else {
            count += right - left;
            left++;
         }
      }
   }
   return count;
}
const arr = [5, 1, 3, 4, 7];
const sum = 12;
console.log(countTriplets(arr, sum));

解釋

  • countTriplets 函式以陣列 arr 和一個值 sum 作為引數。

  • count 變數用於跟蹤和小於 sum 的三個數的組合的數量。

  • arr 使用 sort 函式按升序排序。

  • 外部迴圈 for (let i = 0; i < arr.length - 2; i++) 遍歷陣列,leftright 指標分別初始化為 i 的下一個索引和陣列的最後一個索引。

  • while (left < right) 迴圈持續進行,直到 left 指標大於或等於 right 指標。

  • while (left < right) 迴圈持續進行,直到 left 指標大於或等於 right 指標。

  • while 迴圈的每次迭代中,計算 arr[i]、arr[left]arr[right] 的和。如果此和大於或等於 sum,則遞減 right 指標。如果和小於 sum,則將 count 遞增 leftright 指標之間剩餘元素的數量,並遞增 left 指標。

  • 該函式返回 count 變數,該變量表示和小於 sum 的三個數的組合的數量。

更新於: 2023年3月13日

294 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.