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

ตรวจสอบ Subarray ในอาร์เรย์ดั้งเดิมด้วย 0 ผลรวม JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของ Numbers ที่มีค่าบวกและค่าลบบางส่วน เราจำเป็นต้องตรวจสอบว่ามี subarray ในอาร์เรย์เดิมที่มีผลรวมสุทธิเป็น 0 หรือไม่

ฟังก์ชันของเราควรคืนค่าบูลีนบนพื้นฐานนี้

แนวทาง

วิธีการที่นี่เป็นเรื่องง่าย เราวนซ้ำในอาร์เรย์โดยใช้ for loop คำนวณผลรวมสะสมจนถึงองค์ประกอบเฉพาะนั้น และถ้าจุดใดที่ค่าสะสมกลายเป็น 0 หรือได้ค่าที่มันเคยได้รับมาก่อน ก็จะมีอาร์เรย์ย่อยที่มีผลรวม 0 อยู่ มิฉะนั้นจะมี nosubarray ที่มีผลรวมเป็น 0

ดังนั้น เรามาเขียนโค้ดสำหรับฟังก์ชันนี้กัน −

ตัวอย่าง

const arr = [4, 2, -1, 5, -2, -1, -2, -1, 4, -1, 5, -2, 3];
const zeroSum = arr => {
   const map = new Map();
   let sum = 0;
   for(let i = 0; i < arr.length; i++){
      sum += arr[i];
      if(sum === 0 || map.get(sum)){
         return true;
      };
      map.set(sum, i);
   };
   return false;
};
console.log(zeroSum(arr));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

true