Skip to content

Commit 61dcf64

Browse files
authored
Merge pull request knaxus#3 from knaxus/product-of-elements
2nd approach for product-of-elements
2 parents 19cde7d + 6de86a3 commit 61dcf64

File tree

1 file changed

+33
-1
lines changed
  • src/_Problems_/product-of-elements

1 file changed

+33
-1
lines changed

src/_Problems_/product-of-elements/index.js

+33-1
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,41 @@ function findProduct(arr) {
2121
let right = 1;
2222

2323
// multiply all the numbers to the right side
24-
for (let i = arr.length - 1; i > 0; i -= 1) {
24+
for (let i = arr.length - 1; i >= 0; i -= 1) {
2525
result[i] *= right;
2626
right *= arr[i];
2727
}
2828
return result;
2929
}
30+
31+
function findProduct2(arr) {
32+
let countZeros = 0;
33+
let positionOfZero = -1;
34+
let productOffAllExpectZero = 1;
35+
let result = [];
36+
for (let i = 0; i < arr.length; i += 1) {
37+
if (arr[i] === 0) {
38+
countZeros += 1;
39+
positionOfZero = i;
40+
} else {
41+
productOffAllExpectZero *= arr[i];
42+
}
43+
}
44+
45+
if (countZeros === 0) {
46+
for (let i = 0; i < arr.length; i += 1) {
47+
result[i] = productOffAllExpectZero / arr[i];
48+
}
49+
} else if (countZeros === 1) {
50+
result = Array(arr.length).fill(0);
51+
result[positionOfZero] = productOffAllExpectZero;
52+
} else if (countZeros >= 2) {
53+
result = Array(arr.length).fill(0);
54+
}
55+
return result;
56+
}
57+
58+
module.exports = {
59+
findProduct,
60+
findProduct2,
61+
};

0 commit comments

Comments
 (0)