You are given N counters, initially set to 0, and you have two possible operations on them:
- increase(X) − counter X is increased by 1,
- max counter − all counters are set to the maximum value of any counter.
A non-empty array A of M integers is given. This array represents consecutive operations:
- if A[K] = X, such that 1 ≤ X ≤ N, then operation K is increase(X),
- if A[K] = N + 1 then operation K is max counter.
For example, given integer N = 5 and array A such that:
A[0] = 3 A[1] = 4 A[2] = 4 A[3] = 6 A[4] = 1 A[5] = 4 A[6] = 4the values of the counters after each consecutive operation will be:
(0, 0, 1, 0, 0) (0, 0, 1, 1, 0) (0, 0, 1, 2, 0) (2, 2, 2, 2, 2) (3, 2, 2, 2, 2) (3, 2, 2, 3, 2) (3, 2, 2, 4, 2)The goal is to calculate the value of every counter after all operations.
Write a function:
function solution(N, A);
that, given an integer N and a non-empty array A consisting of M integers, returns a sequence of integers representing the values of the counters.
Result array should be returned as an array of integers.
For example, given:
A[0] = 3 A[1] = 4 A[2] = 4 A[3] = 6 A[4] = 1 A[5] = 4 A[6] = 4the function should return [3, 2, 2, 4, 2], as explained above.
Write an efficient algorithm for the following assumptions:
- N and M are integers within the range [1..100,000];
- each element of array A is an integer within the range [1..N + 1].
function solution(N, A) {
let max = 0;
const counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax)
counter[idx] = preMax;
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
}
function solution(N, A) {
let max = 0;
const counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax)
counter[idx] = preMax;
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
}
Invalid result type, Array expected, 'undefined' found Perhaps you are missing a 'return'?
function solution(N, A) {
let max = 0;
const counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax)
counter[idx] = preMax;
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
return counter;
}
function solution(N, A) {
let max = 0;
const counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){}
counter[idx] = preMax;
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
return counter;
}
function solution(N, A) {
let max = 0;
const counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){
counter[idx] = preMax;
}
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
return counter;
}
function solution(N, A) {
let max = 0;
const counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
counter
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){
counter[idx] = preMax;
}
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
return counter;
}
function solution(N, A) {
let max = 0;
const counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
console.log(counter);
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){
counter[idx] = preMax;
}
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
return counter;
}
[ 0, 0, 0, 0, 0 ] [ 0, 0, 1, 0, 0 ] [ 0, 0, 1, 1, 0 ] [ 0, 0, 1, 2, 0 ] [ 0, 0, 1, 2, 0 ] [ 3, 0, 1, 2, 0 ] [ 3, 0, 1, 3, 0 ]
function solution(N, A) {
let max = 0;
const counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
console.log(counter);
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){
counter[idx] = preMax;
}
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
return counter;
}
function solution(N, A) {
let max = 0;
const counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
console.log(counter);
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){
counter[idx] = preMax;
}
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
counter =
return counter;
}
function solution(N, A) {
let max = 0;
let counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
console.log(counter);
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){
counter[idx] = preMax;
}
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
counter = counter.map(val => (val < preMax)? preMax: val)
return counter;
}
function solution(N, A) {
let max = 0;
let counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
console.log(counter);
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){
counter[idx] = preMax;
}
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
counter = counter.map(val => (val < preMax)? preMax: val);
return counter;
}
[ 0, 0, 0, 0, 0 ] [ 0, 0, 1, 0, 0 ] [ 0, 0, 1, 1, 0 ] [ 0, 0, 1, 2, 0 ] [ 0, 0, 1, 2, 0 ] [ 3, 0, 1, 2, 0 ] [ 3, 0, 1, 3, 0 ]
function solution(N, A) {
let max = 0;
let counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){
counter[idx] = preMax;
}
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
counter = counter.map(val => (val < preMax)? preMax: val);
return counter;
}
function solution(N, A) {
let max = 0;
let counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){
counter[idx] = preMax;
}
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
counter = counter.map(val => (val > preMax)? preMax: val);
return counter;
}
function solution(N, A) {
let max = 0;
let counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){
counter[idx] = preMax;
}
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
counter = counter.map(val => (val > preMax)? val: preMax);
return counter;
}
function solution(N, A) {
let max = 0;
let counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){
counter[idx] = preMax;
}
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
counter = counter.map(val => (val > preMax)? val: preMax);
return counter;
}
function solution(N, A) {
let max = 0;
let counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){
counter[idx] = preMax;
}
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
counter = counter.map(val => (val > preMax)? val: preMax);
return counter;
}
function solution(N, A) {
let max = 0;
let counter = new Array(N).fill(0);
let preMax = 0;
let currMax = 0;
A.forEach(num => {
if(num == N+1){
preMax = currMax;
}else{
const idx = num-1;
if(counter[idx] < preMax){
counter[idx] = preMax;
}
counter[idx]++;
currMax = Math.max(currMax, counter[idx]);
}
})
counter = counter.map(val => (val > preMax)? val: preMax);
return counter;
}
The solution obtained perfect score.