เราจำเป็นต้องเขียนฟังก์ชัน 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]