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].
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    result.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            
        }
    })
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    result.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[]
        }
    })
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    result.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max()
        }
    })
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    result.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1])
        }
    })
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    result.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1], min)
        }
    })
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    result.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+, min)
        }
    })
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    result.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[va])
        }
    })
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    result.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    result.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    
    result.forEac
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    
    result.forEach()
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    
    result.map((val, i) =)
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    
    result = result.map((val, i) => {
        
    })
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    
    return result.map((val, i) => {
        
    })
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    
    return result.map((val, i) => {
        result[i] = Math.max(result[i], min)
    })
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    
    return result.map((val, i) => {
        result[i] = Math.max(result[i], min);
    });
}
Invalid result type, integer expected, 'undefined' found Perhaps you are missing a 'return'?
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    
    result.map((val, i) => {
        result[i] = Math.max(result[i], min);
    });
    
    return 
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    
    result = result.map((val, i) => {
        result[i] = Math.max(result[i], min);
    });
    
    return result
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    
    result = result.map((val, i) => {
        result[i] = Math.max(result[i], min);
    });
    
    return result
}
Invalid result type, integer expected, 'undefined' found Perhaps you are missing a 'return'?
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    console.log(result);
    result = result.map((val, i) => {
        result[i] = Math.max(result[i], min);
    });
    
    return result
}
Invalid result type, integer expected, 'undefined' found Perhaps you are missing a 'return'?stdout:
[ 2, 0, 1, 4, 0 ]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    console.log(result);
    result = result.map(
    
    return result
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    console.log(result);
    for (let i =0; i< result.length; i)
    
    return result
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    console.log(result);
    for (let i =0; i< result.length; i++) {
        result[i] = Math.max(result[i], min);
    }
    
    return result
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1]+1, min);
            max = Math.max(result[val-1], max);
        }
    })
    console.log(result);
    for (let i =0; i< result.length; i++) {
        result[i] = Math.max(result[i], min);
    }
    
    return result;
}
[ 2, 0, 1, 4, 0 ]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1], min) + 1;
            max = Math.max(result[val-1], max);
        }
    })
    console.log(result);
    for (let i =0; i< result.length; i++) {
        result[i] = Math.max(result[i], min);
    }
    
    return result;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1], min) + 1;
            max = Math.max(result[val-1], max);
        }
    })
 
    for (let i =0; i< result.length; i++) {
        result[i] = Math.max(result[i], min);
    }
    
    return result;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1], min) + 1;
            max = Math.max(result[val-1], max);
        }
    })
    for (let i =0; i< result.length; i++) {
        result[i] = Math.max(result[i], min);
    }
    
    return result;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1], min) + 1;
            max = Math.max(result[val-1], max);
        }
    })
    for (let i =0; i< result.length; i++) {
        result[i] = Math.max(result[i], min);
    }
    
    return result;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1], min) + 1;
            max = Math.max(result[val-1], max);
        }
    })
    for (let i =0; i< result.length; i++) {
        result[i] = Math.max(result[i], min);
    }
    
    return result;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1], min) + 1;
            max = Math.max(result[val-1], max);
        }
    })
    for (let i =0; i< result.length; i++) {
        result[i] = Math.max(result[i], min);
    }
    
    return result;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1], min) + 1;
            max = Math.max(result[val-1], max);
        }
    })
    for (let i =0; i< result.length; i++) {
        result[i] = Math.max(result[i], min);
    }
    
    return result;
}
function result: [1, 0, 0]
function result: [0, 0, 0]
function result: [1, 2, 1]
function result: [16, 16, 15, 15, 15, 15, 15, 15, 15, 16]
[3, [1]]
[3, [4]]
[3, [1, 4, 2]]
[10, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 5, 6, 7, 11, 10, 1, 2]]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1], min) + 1;
            max = Math.max(result[val-1], max);
        }
    })
    for (let i =0; i< result.length; i++) {
        result[i] = Math.max(result[i], min);
    }
    
    return result;
}
function result: [1, 0, 0]
function result: [0, 0, 0]
function result: [1, 2, 1]
function result: [16, 16, 15, 15, 15, 15, 15, 15, 15, 16]
[3, [1]]
[3, [4]]
[3, [1, 4, 2]]
[10, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 5, 6, 7, 11, 10, 1, 2]]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(N, A) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = Array.from({length: N}, () => 0);
    let max = 0;
    let min = 0;
    
    A.forEach((val) => {
        if(val > N) {
            min = max;
        } else {
            result[val-1] = Math.max(result[val-1], min) + 1;
            max = Math.max(result[val-1], max);
        }
    })
    for (let i =0; i< result.length; i++) {
        result[i] = Math.max(result[i], min);
    }
    
    return result;
}
The solution obtained perfect score.