Skip to content

Commit 31d10eb

Browse files
Jeehay28Jeehay28
authored andcommitted
Add product-of-array-except-self solution in TypeScript
1 parent 4811c46 commit 31d10eb

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// Approach 2
2+
// 🗓️ 2025-04-08
3+
// ⏳ Time Complexity: O(n + n + n) = O(n)
4+
// 💾 Space Complexity: O(1)
5+
// result: required output → not counted
6+
// before, after: two scalar variables → O(1)
7+
// So, the total extra space is O(1)
8+
9+
function productExceptSelf(nums: number[]): number[] {
10+
const result: number[] = new Array(nums.length).fill(1);
11+
let before = 1;
12+
let after = 1;
13+
14+
for (let i = 0; i < nums.length - 1; i++) {
15+
before *= nums[i];
16+
result[i + 1] *= before;
17+
}
18+
19+
for (let i = nums.length - 1; i > 0; i--) {
20+
after *= nums[i];
21+
result[i - 1] *= after;
22+
}
23+
return result;
24+
}
25+
26+
27+
// Approach 1
28+
// 🗓️ 2025-04-08
29+
// ⏳ Time Complexity: O(n + n + n) = O(n)
30+
// 💾 Space Complexity: O(n + n) = O(n)
31+
32+
// When we analyze space complexity,
33+
// we only count extra space used in addition to the input and required output.
34+
// ✅ before → O(n) extra
35+
// ✅ after → O(n) extra
36+
// 🚫 result is the output, so it’s not counted toward space complexity
37+
38+
// function productExceptSelf(nums: number[]): number[] {
39+
// // nums: an array of size n
40+
// // before: nums[0], nums[1].., nums[i-2], nums[i-1]
41+
// // after: nums[i+1], nums[i+2],..., nums[n-1]
42+
43+
// // input: [1, 2, 3, 4]
44+
// // before: [1, 1, 2, 6]
45+
// // after: [24, 12, 4, 1]
46+
// // product: [24, 12, 8, 6]
47+
48+
// const before = new Array(nums.length).fill(1);
49+
// const after = new Array(nums.length).fill(1);
50+
// const result: number[] = [];
51+
52+
// for (let i = 0; i < nums.length - 1; i++) {
53+
// before[i + 1] = before[i] * nums[i];
54+
// }
55+
56+
// for (let i = nums.length - 1; i > 0; i--) {
57+
// after[i - 1] = after[i] * nums[i];
58+
// }
59+
60+
// for (let i = 0; i < nums.length; i++) {
61+
// result[i] = before[i] * after[i];
62+
// }
63+
64+
// return result;
65+
// }

0 commit comments

Comments
 (0)