有沒有更高效的方法來編寫這個“兩數之和”問題的 JavaScript 程式碼?
我們的任務是編寫一個函式,該函式能夠在最多線性時間內解決兩數之和問題。
兩數之和問題
給定一個整數陣列,我們必須找到兩個數字,使它們的和等於特定目標數字。
`twoSum` 函式應該返回兩個加起來等於目標數字的數字的索引,如果沒有任何兩個元素加起來等於目標數字,則我們的函式應該返回一個空陣列。
在 O(n) 時間內解決問題
我們將使用雜湊表來記錄已出現的專案,在每次迴圈中,我們將檢查對映中是否存在任何元素,當與當前元素相加時,它們的和等於目標值,如果存在,我們將返回一個包含其索引的陣列;如果我們遍歷整個迴圈而沒有滿足此條件,我們將返回一個空陣列。
示例
const arr = [2, 5, 7, 8, 1, 3, 6, 9, 4];
const sum = 10;
const twoSum = (arr, sum) => {
const map = {};
for(let i = 0; i < arr.length; i++){
const el = sum - arr[i];
if(map[el]){
return [map[el], i];
};
map[arr[i]] = i;
};
return [];
};
console.log(twoSum(arr, sum));
console.log(twoSum(arr, 12));
console.log(twoSum(arr, 13));
console.log(twoSum(arr, 14));
console.log(twoSum(arr, 24));輸出
控制檯輸出將是:
[ 2, 5 ] [ 1, 2 ] [ 1, 3 ] [ 3, 6 ] []
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP