Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6de86a3

Browse files
committed
--update : add 2nd approach
1 parent 131a270 commit 6de86a3

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‎

Lines changed: 33 additions & 1 deletion
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)

AltStyle によって変換されたページ (->オリジナル) /