반응형
https://leetcode.com/problems/range-sum-query-immutable/description/
부분합 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
부분합을 저장할 vector sums를 선언 후 instance 생성시에 nums만큼 resize해 0으로 초기화합니다.
📔 풀이과정
1. 생성자를 구현합니다. nums의 원소들을 순환하면서 nums[0] ~ nums[i] 까지의 합을 sums[i]에 저장합니다.
2. sumRange함수를 구현합니다.
2-1. left가 0이라면 바로 sums[right]를 반환하면 됩니다.
2-2. 만약 left가 0이 아니라면 0부터 right까지의 누적합인 sums[right]에서 0부터 left - 1까지의 합인 sums[left - 1]을 빼 반환합니다.
📕 Code
📔 C++
class NumArray {
public:
vector <int> sums;
NumArray(vector<int>& nums) {
sums.resize(nums.size(), 0);
sums[0] = nums[0];
for(int i = 1; i < nums.size(); i++) {
sums[i] = sums[i-1] + nums[i];
}
}
int sumRange(int left, int right) {
if(!left) return sums[right];
return sums[right] - sums[left - 1];
}
};
/**
* Your NumArray object will be instantiated and called as such:
* NumArray* obj = new NumArray(nums);
* int param_1 = obj->sumRange(left,right);
*/
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > DP(Dynamic Programing)' 카테고리의 다른 글
(C++) - LeetCode (easy) 724. Find Pivot Index (0) | 2023.06.25 |
---|---|
(C++) - LeetCode (easy) 509. Fibonacci Number (0) | 2023.04.11 |
(C++) - LeetCode (easy) 1137. N-th Tribonacci Number (0) | 2023.01.30 |
(C++) - LeetCode (easy) 263. Ugly Number (0) | 2023.01.26 |
(C++) - LeetCode (easy) 70. Climbing Stairs (0) | 2022.11.11 |