First Duplicate Value
First Duplicate Value
// O(n) time | O(1) space - where n is the length of the input array
function firstDuplicateValue(array) {
for (const value of array) {
const absValue = Math.abs(value);
if (array[absValue - 1] < 0) return absValue;
array[absValue - 1] *= -1;
}
return -1;
}
// Do not edit the line below.
exports.firstDuplicateValue = firstDuplicateValue;
// O(n) time | O(n) space
function arrayOfProducts(array) {
const products = new Array(array.length).fill(1);
const leftProducts = new Array(array.length).fill(1);
const rightProducts = new Array(array.length).fill(1);
let leftRunningProduct = 1;
for (let i = 0; i < array.length; i++) {
leftProducts[i] = leftRunningProduct;
leftRunningProduct *= array[i];
}
let rightRunningProduct = 1;
for (let i = array.length - 1; i > -1; i--) {
rightProducts[i] = rightRunningProduct;
rightRunningProduct *= array[i];
}
for (let i = 0; i < array.length; i++) {
products[i] = leftProducts[i] * rightProducts[i]
}
return products;
}
// Do not edit the line below.
exports.arrayOfProducts = arrayOfProducts;
Last updated