Leetcode Java Range Sum Query - Immutable
업데이트:
문제
코드
class NumArray {
private int[] nums;
public NumArray(int[] nums) {
int length = nums.length;
this.nums = new int[length];
for (int idx = 0; idx < length; idx++) {
if (idx == 0) {
this.nums[idx] = nums[idx];
} else {
this.nums[idx] = this.nums[idx - 1] + nums[idx];
}
}
}
public int sumRange(int left, int right) {
if (left == 0) {
return nums[right];
} else {
return nums[right] - nums[left - 1];
}
}
}
/**
* Your NumArray object will be instantiated and called as such:
* NumArray obj = new NumArray(nums);
* int param_1 = obj.sumRange(left,right);
*/
결과
설명
- 배열을 주입하여 구간 값의 합을 구하는 NumArray 클래스를 완성하는 문제이다.
- 생성자인 NumArray(int[] nums)는 NumsArray 클래스를 초기화하여 nums의 값들을 주입한다.
- 메서드인 sumRange(int left, int right)는 생성자로 주입된 값들의 left번째 값부터 right번째 값까지 더하여 반환한다.
- 문제 풀이에 필요한 변수를 정의한다.
- nums는 생성자로 부여된 정수들의 값을 누계하여 저장할 변수이다.
- 생성자인 NumArray(int[] nums)를 완성한다.
- 주어진 nums의 길이를 length로 정의한다.
- 전역 변수인 nums를 nums의 길이로 초기화 한다.
- 반복을 이용하여 주입된 nums의 값의 idx번째 값까지 합을 전역변수 nums의 idx 위치의 값에 넣어준다.
- 메서드인 sumRange(int left, int right)를 완성한다.
- nums에 각 위치 별 누계를 저장하였으므로 left가 0인 경우, nums[right]의 값이 이미 중촉하여 해당 값을 주어진 문제의 결과로 반환한다.
- left가 0이 아닌 경우, nums[right]의 값에서 nums[$left - 1$]의 값을 빼면 left번째 값에서 right번째 값들의 합이 되므로 뺀 값을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기