Chúng ta cần viết hàm JavaScript nhận vào mảng số có giá trị dương và âm, xác định xem có tồn tại mảng con nào có tổng bằng 0 hay không. Hàm trả về boolean.
Cách tiếp cận: duyệt mảng, tính tổng tích lũy. Nếu tổng tích lũy bằng 0 hoặc lặp lại giá trị đã từng có → tồn tại mảng con tổng 0.
Dưới đây là mã:
Ví dụ
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));Kết quả
Đầu ra trong console sẽ là:
true