Activate Fountain

Problem


activate-fountain

My Solution

success
function fountainActivation(locations) {
	// Write your code here
	let cnt = 1;
	let pos = [...locations].fill(-1);
	let idxLeft, idxRight;

	for (let i = 0; i < locations.length; i++) {
		idxLeft = Math.max(i - locations[i], 0);
		idxRight = Math.min(i + (locations[i] + 1), locations.length);
		pos[idxLeft] = Math.max(pos[idxLeft], idxRight);
	}

	let idxNext = 0;
	idxRight = pos[0];

	for (let i = 0; i < locations.length; i++) {
		idxNext = Math.max(idxNext, pos[i]);

		if (i === idxRight) {
			cnt++;
			idxRight = idxNext;
		}
	}

	return cnt;
}