All Divisions With the Highest Score of a Binary Array LeetCode solution in JavaScript

1
/**
2
* @param {number[]} nums
3
* @return {number[]}
4
*/
5
var maxScoreIndices = function (nums) {
6
let n = nums.length;
7
// initialize 3 arrays for counting with n+1 size
8
let zeros = new Array(n + 1).fill(0);
9
let ones = new Array(n + 1).fill(0);
10
let total = new Array(n + 1).fill(0);
11

12
// count no of zeros from left to right
13
for (let i = 0; i < n; i++) {
14
if (nums[i] == 0) zeros[i + 1] = zeros[i] + 1;
15
else zeros[i + 1] = zeros[i];
16
}
17

18
// count no of ones from right to left
19
for (let i = n - 1; i >= 0; i--) {
20
if (nums[i] == 1) ones[i] = ones[i + 1] + 1;
21
else ones[i] = ones[i + 1];
22
}
23

24
// merge left and right to total and find max element
25
let max = 0;
26
for (let i = 0; i < n + 1; i++) {
27
total[i] = ones[i] + zeros[i];
28
if (total[i] > max) max = total[i];
29
}
30

31
// Find occurrence of max elements and return those indexes
32
let ans = [];
33
for (let i = 0; i < n + 1; i++) {
34
if (total[i] == max) ans.push(i);
35
}
36

37
return ans;
38
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0