เราต้องเขียนฟังก์ชันที่รับอาร์เรย์ตัวเลขและค่าเป้าหมาย (target) คืนอาร์เรย์ของคู่ตัวเลขที่ผลรวมเท่ากับ target
ใช้ Map object เพื่อตรวจสอบคู่ที่ต้องการในเวลา O(n)
ตัวอย่างโค้ด
const arr = [7, 0, -4, 5, 2, 3];
const allTwoSum = (arr, target) => {
const map = {};
const results = [];
for (let i = 0; i < arr.length; i++) {
if (map[arr[i]]) {
results.push([target - arr[i], arr[i]]);
continue;
}
map[target - arr[i]] = true;
}
return results;
};
console.log(allTwoSum(arr, 5));
ผลลัพธ์
ค่าที่แสดงในคอนโซลจะเป็นดังนี้:
[ [ 0, 5 ], [ 2, 3 ] ]