Leetcode Java Product of Array Except Self
업데이트:
문제
코드
class Solution {
public int[] productExceptSelf(int[] nums) {
int length = nums.length;
int[] result = new int[length];
result[0] = 1;
for (int idx = 1; idx < length; idx++) {
result[idx] = result[idx - 1] * nums[idx - 1];
}
int right = 1;
for (int idx = length - 1; idx >= 0; idx--) {
result[idx] *= right;
right *= nums[idx];
}
return result;
}
}
결과
설명
- 주어진 nums를 이용하여 동일한 위치 값의 곱셈 결과가 모든 요소를 곱한 값과 동일한 배열을 만드는 문제이다.
- O(n)의 시간 복잡도를 가지는 알고리즘을 작성해야 한다.
- 나눗셈 연산자를 사용하지 말아야 한다.
- 문제 풀이에 필요한 변수를 정의한다.
- length는 nums의 길이를 저장하여 활용하기 위한 변수이다.
- result는 nums의 같은 위치의 값의 곱이 모든 요소를 곱한 값과 동일한 값을 만들기 위한 배열로, 첫 값인 result[0]에 1을 넣어준다.
- result의 두 번째 위치부터 반복하여 result[idx] 값을 넣어준다.
- result[idx]에 result[$idx - 1$]의 값과 nums[$idx - 1$]의 값의 곱을 넣어준다.
- 우측에서부터 result에 결과를 채우기 위해 반복하여 아래를 수행한다.
- result[idx]에 right와 곱한 값을 넣어준다.
- right에 nums[idx]의 값과 곱한 값을 넣어준다.
- 반복이 완료되어 result가 채워지면 result를 주어진 문제의 결과를 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기