An integer M and a non-empty array A consisting of N non-negative integers are given. All integers in array A are less than or equal to M.
A pair of integers (P, Q), such that 0 ≤ P ≤ Q < N, is called a slice of array A. The slice consists of the elements A[P], A[P + 1], ..., A[Q]. A distinct slice is a slice consisting of only unique numbers. That is, no individual number occurs more than once in the slice.
For example, consider integer M = 6 and array A such that:
A[0] = 3 A[1] = 4 A[2] = 5 A[3] = 5 A[4] = 2There are exactly nine distinct slices: (0, 0), (0, 1), (0, 2), (1, 1), (1, 2), (2, 2), (3, 3), (3, 4) and (4, 4).
The goal is to calculate the number of distinct slices.
Write a function:
function solution(M, A);
that, given an integer M and a non-empty array A consisting of N integers, returns the number of distinct slices.
If the number of distinct slices is greater than 1,000,000,000, the function should return 1,000,000,000.
For example, given integer M = 6 and array A such that:
A[0] = 3 A[1] = 4 A[2] = 5 A[3] = 5 A[4] = 2the function should return 9, as explained above.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [1..100,000];
- M is an integer within the range [0..100,000];
- each element of array A is an integer within the range [0..M].
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
const LIMIT = 1000000000;
let count = 0;
if (M < 1 || A.length < 2) {
return 1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
const LIMIT = 1000000000;
let count = 0;
if (M < 1 || A.length < 2) {
return 1;
}
let start = 0;
let
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
const LIMIT = 1000000000;
let count = 0;
if (M < 1 || A.length < 2) {
return 1;
}
let start = 0;
let lastPos = i;
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = i;
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
l
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length; i++) {
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length; i++) {
const item = A[i];
if (lastPos[i] + 1 )
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length; i++) {
const item = A[i];
if (lastPos[i] + 1 > start) {
start = lastPos[item] + 1;
}
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length; i++) {
const item = A[i];
if (lastPos[i] + 1 > start) {
start = lastPos[item] + 1;
}
last
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length; i++) {
const item = A[i];
if (lastPos[i] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] =
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length; i++) {
const item = A[i];
if (lastPos[i] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
if (count > LIM)
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length && count ; i++) {
const item = A[i];
if (lastPos[i] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
if (lastPos[i] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
if (lastPos[i] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, lastPos')
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, lastPosI, start, count:')
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, lastPosI, start, count:', item, lastPosI, start, count)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
ReferenceError: lastPosI is not defined at solution (solution.js:21:63) at solutionWrapper (/tmp/exec.js:404:28) at Promise.resolve.then (/tmp/exec.js:430:24) at <anonymous> at process._tickCallback (internal/process/next_tick.js:188:7) at Function.Module.runMain (module.js:686:11) at startup (bootstrap_node.js:187:16) at bootstrap_node.js:608:3
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, lastPosI, start, count:', item, lastPos[item], start, count)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
-> item, lastPosI, start, count: 3 -1 0 0 -> item, lastPosI, start, count: 4 -1 0 1 -> item, lastPosI, start, count: 5 -1 0 3 -> item, lastPosI, start, count: 5 2 0 6 -> item, lastPosI, start, count: 2 -1 3 7
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
cons
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, lastPosI, start, count:', item, lastPos[item], start, count)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
console.log(lastPos);
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, lastPosI, start, count:', item, lastPos[item], start, count)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
[ -1, -1, -1, -1, -1, -1, -1 ] -> item, lastPosI, start, count: 3 -1 0 0 -> item, lastPosI, start, count: 4 -1 0 1 -> item, lastPosI, start, count: 5 -1 0 3 -> item, lastPosI, start, count: 5 2 0 6 -> item, lastPosI, start, count: 2 -1 3 7
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
console.log(lastPos);
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, lastPosI, start, count:', item, lastPos, start, count)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
[ -1, -1, -1, -1, -1, -1, -1 ] -> item, lastPosI, start, count: 3 [ -1, -1, -1, -1, -1, -1, -1 ] 0 0 -> item, lastPosI, start, count: 4 [ -1, -1, -1, 0, -1, -1, -1 ] 0 1 -> item, lastPosI, start, count: 5 [ -1, -1, -1, 0, 1, -1, -1 ] 0 3 -> item, lastPosI, start, count: 5 [ -1, -1, -1, 0, 1, 2, -1 ] 0 6 -> item, lastPosI, start, count: 2 [ -1, -1, -1, 0, 1, 3, -1 ] 3 7
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
console.log(lastPos);
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, lastPos, start, count:', item, lastPos, start, count)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
console.log(lastPos);
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, lastPos, start, count:', item, lastPos, start, count)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
[ -1, -1, -1, -1, -1, -1, -1 ] -> item, lastPos, start, count: 3 [ -1, -1, -1, -1, -1, -1, -1 ] 0 0 -> item, lastPos, start, count: 4 [ -1, -1, -1, 0, -1, -1, -1 ] 0 1 -> item, lastPos, start, count: 5 [ -1, -1, -1, 0, 1, -1, -1 ] 0 3 -> item, lastPos, start, count: 5 [ -1, -1, -1, 0, 1, 2, -1 ] 0 6 -> item, lastPos, start, count: 2 [ -1, -1, -1, 0, 1, 3, -1 ] 3 7
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
console.log(lastPos);
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, start, count, lastPos:', item, lastPos, start, count)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
console.log(lastPos);
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, start, count, lastPos:', item, start, count, lastPos)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
console.log(lastPos);
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, start, count, lastPos:', item, start, count, lastPos)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
[ -1, -1, -1, -1, -1, -1, -1 ] -> item, start, count, lastPos: 3 0 0 [ -1, -1, -1, -1, -1, -1, -1 ] -> item, start, count, lastPos: 4 0 1 [ -1, -1, -1, 0, -1, -1, -1 ] -> item, start, count, lastPos: 5 0 3 [ -1, -1, -1, 0, 1, -1, -1 ] -> item, start, count, lastPos: 5 0 6 [ -1, -1, -1, 0, 1, 2, -1 ] -> item, start, count, lastPos: 2 3 7 [ -1, -1, -1, 0, 1, 3, -1 ]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
console.log(lastPos);
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, start, count, lastPos:', item, start, count, lastPos)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
cons
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
console.log(lastPos);
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> item, start, count, lastPos:', item, start, count, lastPos)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
console.log(count)
return count > LIMIT ? LIMIT : count;
}
[ -1, -1, -1, -1, -1, -1, -1 ] -> item, start, count, lastPos: 3 0 0 [ -1, -1, -1, -1, -1, -1, -1 ] -> item, start, count, lastPos: 4 0 1 [ -1, -1, -1, 0, -1, -1, -1 ] -> item, start, count, lastPos: 5 0 3 [ -1, -1, -1, 0, 1, -1, -1 ] -> item, start, count, lastPos: 5 0 6 [ -1, -1, -1, 0, 1, 2, -1 ] -> item, start, count, lastPos: 2 3 7 [ -1, -1, -1, 0, 1, 3, -1 ] 9
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
console.log(lastPos);
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
console.log('-> i, item, start, count, lastPos:', i, item, start, count, lastPos)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
console.log(count)
return count > LIMIT ? LIMIT : count;
}
[ -1, -1, -1, -1, -1, -1, -1 ] -> i, item, start, count, lastPos: 0 3 0 0 [ -1, -1, -1, -1, -1, -1, -1 ] -> i, item, start, count, lastPos: 1 4 0 1 [ -1, -1, -1, 0, -1, -1, -1 ] -> i, item, start, count, lastPos: 2 5 0 3 [ -1, -1, -1, 0, 1, -1, -1 ] -> i, item, start, count, lastPos: 3 5 0 6 [ -1, -1, -1, 0, 1, 2, -1 ] -> i, item, start, count, lastPos: 4 2 3 7 [ -1, -1, -1, 0, 1, 3, -1 ] 9
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
console.log(lastPos);
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
// console.log('-> i, item, start, count, lastPos:', i, item, start, count, lastPos)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
console.log(count)
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
console.log(lastPos);
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
// console.log('-> i, item, start, count, lastPos:', i, item, start, count, lastPos)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
[ -1, -1, -1, -1, -1, -1, -1 ]
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
// console.log('-> i, item, start, count, lastPos:', i, item, start, count, lastPos)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
// console.log('-> i, item, start, count, lastPos:', i, item, start, count, lastPos)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
// console.log('-> i, item, start, count, lastPos:', i, item, start, count, lastPos)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(M, A) {
// write your code in JavaScript (Node.js 8.9.4)
if (M < 1 || A.length < 2) {
return 1;
}
const LIMIT = 1000000000;
let count = 0;
let start = 0;
let lastPos = [];
for (let i = 0; i <= M; i++) {
lastPos[i] = -1;
}
for (let i = 0; i < A.length && count <= LIMIT; i++) {
const item = A[i];
// console.log('-> i, item, start, count, lastPos:', i, item, start, count, lastPos)
if (lastPos[item] + 1 > start) {
start = lastPos[item] + 1;
}
lastPos[item] = i;
count += i - start + 1;
}
return count > LIMIT ? LIMIT : count;
}
The solution obtained perfect score.