Skip to content

Commit e81454f

Browse files
committed
solving product of array
1 parent 9d5239b commit e81454f

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

β€Žhouse-robber/Geegong.javaβ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
package leetcode_study;public class Geegong {
2+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import java.util.Arrays;
2+
3+
public class Geegong {
4+
5+
/**
6+
* Time complexity : O(n)
7+
* Space complexity : O(1) (except result)
8+
*
9+
* 풀이 : prefix array , suffix array λ₯Ό 각 λ°°μ—΄λ§ˆλ‹€ κ΅¬ν•˜μ—¬ 각 array에 ν•΄λ‹Ήλ˜λŠ” 인덱슀의 값듀을 κ³±ν•˜μ—¬ 결과값을 λ„μΆœ
10+
*
11+
* @param nums
12+
* @return
13+
*/
14+
public int[] productExceptSelf(int[] nums) {
15+
16+
int[] result = new int[nums.length];
17+
18+
// 1. result λŠ” λ¨Όμ € prefix λ°°μ—΄λ“€μ˜ 곱으둜 μ±„μš΄λ‹€.
19+
// ( prefix λ°°μ—΄μ΄λž€ ν•΄λ‹Ήλ˜λŠ” index μ΄μ „μ˜ λ°°μ—΄μš”μ†Œκ°’λ“€μ„ 의미)
20+
21+
// μ•žμ—μ„œλΆ€ν„° λˆ„μ λ˜λŠ” 총 곱의 κ°’
22+
int accumulatedProduct = 1;
23+
for (int index=0; index<nums.length; index++) {
24+
if (index == 0) {
25+
result[index] = 1;
26+
continue;
27+
}
28+
29+
result[index] = accumulatedProduct * nums[index - 1];
30+
accumulatedProduct = result[index];
31+
}
32+
33+
// 2. λ°°μ—΄μ˜ λ’€μ—μ„œλΆ€ν„° product of suffix 값은 result λ°°μ—΄ ν•˜λ‚˜ν•˜λ‚˜μ— λŒ€μ²΄ν•œλ‹€.
34+
35+
// nums λ°°μ—΄ μ•ˆμ—μ„œ λ’€μ—μ„œλΆ€ν„° λˆ„μ λ˜λŠ” 총 곱의 κ°’
36+
accumulatedProduct = 1;
37+
for (int index=nums.length - 1; index >= 0; index--) {
38+
if (index == nums.length - 1) {
39+
accumulatedProduct = nums[index];
40+
continue;
41+
}
42+
43+
result[index] = result[index] * accumulatedProduct;
44+
accumulatedProduct = accumulatedProduct * nums[index];
45+
}
46+
47+
return result;
48+
}
49+
50+
}

0 commit comments

Comments
Β (0)