Cho một mảng số, viết hàm đếm số nhóm các số âm liên tiếp. Một nhóm được định nghĩa là dãy các số âm liên tiếp nhau, bị ngăn cách bởi số không âm (>= 0).
Ví dụ
const arr = [-1, -2, -1, 0, -1, -2, -1, -2, -1, 0, 1, 0];
// Nhóm 1: index 0-2 (-1, -2, -1)
// Nhóm 2: index 4-8 (-1, -2, -1, -2, -1)
// Kết quả: 2Giải pháp
Duyệt mảng, tăng bộ đếm khi gặp số âm và phần tử tiếp theo là không âm (hoặc hết mảng).
const arr = [-1, -2, -1, 0, -1, -2, -1, -2, -1, 0, 1, 0];
const countNegativeGroup = arr => {
return arr.reduce((acc, val, ind) => {
// Nếu giá trị hiện tại âm VÀ (phần tử tiếp theo không âm HOẶC là phần tử cuối)
if (val < 0 && (ind === arr.length - 1 || arr[ind + 1] >= 0)) {
acc++;
}
return acc;
}, 0);
};
console.log(countNegativeGroup(arr));Kết quả
2Lưu ý: Điều kiện ind === arr.length - 1 xử lý trường hợp mảng kết thúc bằng số âm.