เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลขเป็นอาร์กิวเมนต์แรก และผลรวมเป้าหมายเป็นอาร์กิวเมนต์ที่สอง
ฟังก์ชันควรค้นหาและส่งคืนดัชนีของตัวเลขสองตัวดังกล่าวจากอาร์เรย์ (ติดต่อกันหรือไม่ติดต่อกัน) ที่รวมกันเพื่อให้ได้ผลรวมเป้าหมาย (ถ้ามี) เงื่อนไขคือเราต้องทำเช่นนี้ในเวลาเชิงเส้น (การวนซ้ำหนึ่งครั้ง)
เราจะนับจำนวนที่วนซ้ำโดยใช้แผนที่ และหาก ณ จุดใดที่เราพบตัวเลขสองตัวที่ให้ผลรวมเป้าหมาย เราจะส่งคืนทันที
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = [1, 3, 5, 7, 9, 11];
const target = 16;
const twoSum = function(arr, target) {
const map = new Map();
for(let i = 0; i < arr.length; i++) {
let num = arr[i];
if(map.get(num) === undefined){
map.set(target−num, i)
}else{
return [map.get(num), i]
};
};
};
console.log(twoSum(arr, target)); ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[3, 4]