Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ตรวจสอบซับอาร์เรย์ที่มีผลรวมเป็น 0 ในอาร์เรย์ต้นฉบับ JavaScript


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

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

แนวทาง

แนวทางง่ายๆ เราวนลูปผ่านอาร์เรย์ด้วย for loop คำนวณผลรวมสะสมจนถึงองค์ประกอบนั้น หาก בנקודהใดผลรวมสะสมเป็น 0 หรือมีค่าที่เคยมีมาก่อน แสดงว่ามีซับอาร์เรย์ที่ผลรวมเป็น 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