prefix[], suffix[] 만들어서 푸는 방법
O(n)으로 풀어야 하는 조건이 있어 prefix[]와 suffix[]를 미리 만들어두어야 한다.
class Solution {
public int[] productExceptSelf(int[] nums) {
int n = nums.length;
int pre[] = new int[n];
int suff[] = new int[n];
pre[0] = 1;
suff[n - 1] = 1;
for(int i = 1; i < n; i++) {
pre[i] = pre[i - 1] * nums[i - 1];
}
for(int i = n - 2; i >= 0; i--) {
suff[i] = suff[i + 1] * nums[i + 1];
}
int ans[] = new int[n];
for(int i = 0; i < n; i++) {
ans[i] = pre[i] * suff[i];
}
return ans;
}
}
answer[]외 배열 생성 없이 푸는 방법
class Solution {
public int[] productExceptSelf(int[] nums) {
int n = nums.length;
int[] answer = new int[n];
for (int i=0; i<n; i++) {
answer[i] = 1;
}
int curr = 1;
for (int i=0; i<n; i++) {
answer[i] *= curr;
curr *= nums[i];
}
curr = 1;
for (int i=n-1; i>=0; i--) {
answer[i] *= curr;
curr *= nums[i];
}
return answer;
}
}
'알고리즘 > 알고리즘 풀이' 카테고리의 다른 글
Leetcode in Java - 560. Subarray Sum Equals K (2) | 2025.02.11 |
---|---|
Leetcode in Java - 46. Permutations (backtracking) (1) | 2025.02.05 |
Leetcode in Java - 46. Permutations (재귀) (1) | 2025.02.03 |
위장 (0) | 2019.09.10 |