Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ปัญหาสองผลรวมในเวลาเชิงเส้นใน JavaScript


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