ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ไบนารี arr เป็นอาร์กิวเมนต์แรก และตัวเลข เป้าหมาย เป็นอาร์กิวเมนต์ที่สอง
ฟังก์ชันของเราควรจะนับจำนวนอาร์เรย์ย่อยที่มีอยู่ในอาร์เรย์ arr ผลรวมขององค์ประกอบที่มีเท่ากับการนับ ในที่สุดเราก็ควรคืนจำนวนนี้
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ
ป้อนข้อมูล
const arr = [1, 0, 1, 0, 1]; const target = 2;
ผลผลิต
const output = 4;
คำอธิบายผลลัพธ์
เนื่องจากอาร์เรย์ย่อยที่ต้องการคือ:
[1,0,1][1,0,1,0] [0,1,0,1] [1,0,1]
ตัวอย่าง
const arr = [1, 0, 1, 0, 1]; const target = 2; const countSubarrays = (arr = [], target = 1) => { const map = {} let sum = 0 let count = 0 for (const num of arr) { map[sum] = (map[sum] || 0) + 1 sum += num count += map[sum - target] || 0 } return count }; console.log(countSubarrays(arr, target));
ผลลัพธ์
4