在 JavaScript 陣列中,尋找和既定的元素


我們需要寫一個 JavaScript 函式,它將一個數字陣列作為第一個引數,一個單獨的數字作為第二個引數。然後,該函式將從陣列中挑選三個數字(如果它們存在),其和等於第二個引數指定的數字。

最後,如果存在,該函式將返回所有此類三元組的陣列陣列,否則返回一個空陣列。

例如 −

如果輸入陣列和數字為 −

const arr = [2, 5, 7, 8, 9, 11, 1, 6];
const sum = 22;

則輸出應為 −

const output = [ [ 2, 9, 11 ], [ 5, 6, 11 ], [ 5, 8, 9 ], [ 6, 7, 9 ] ];

示例

程式碼如下 −

const arr = [2, 5, 7, 8, 9, 11, 1, 6];
const sum = 22;
const threeSum = (arr = [], sum) => {
   arr.sort((a,b) => a - b);
   const res = [];
   for(let i=0; i < arr.length - 2; i++){
      if(arr[i] != arr[i-1]){
         let left = i + 1;
         let right = arr.length - 1;
         while (left < right){
            const curr = arr[i] + arr[left] + arr[right];
            if (curr === sum){
               res.push([arr[i], arr[left], arr[right]]);
               while(arr[left] == arr[left + 1]) left ++
               while(arr[right] == arr[right - 1]) right -- // making sure
               our solution set does not contain duplicate res
               left ++;
               right --;
            } else if(curr < sum) {
               left ++
            } else if(curr > sum){
               right --
            };
         };
      };
   };
   return res
};
console.log(threeSum(arr, sum));

輸出

控制檯中的輸出將為 −

[ [ 2, 9, 11 ], [ 5, 6, 11 ], [ 5, 8, 9 ], [ 6, 7, 9 ] ]

更新於: 2021-2-24

256 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始
廣告