303. Range Sum Query - Immutable
class NumArray:
def __init__(self, nums: List[int]):
self.nums = nums
self.area = [0]*len(nums)
self.area[0] = nums[0] # 첫 원소는 그대로 할당
for i in range(1, len(nums)):
self.area[i] = self.area[i - 1] + nums[i] # 누적합 계산
def sumRange(self, left: int, right: int) -> int:
if left == 0:
return self.area[right]
else:
return self.area[right] - self.area[left - 1]
return res
# Your NumArray object will be instantiated and called as such:
# obj = NumArray(nums)
# param_1 = obj.sumRange(left,right)
정리된 코드
class NumArray:
def __init__(self, nums: List[int]):
self.nums = nums # 원본 배열 저장
self.prefixSum = [] # 누적합을 저장할 배열
total = 0 # 누적합 계산용 임시 변수
for n in nums:
total += n # 지금까지의 합을 누적하고
self.prefixSum.append(total) # 누적합 배열에 추가
def sumRange(self, left: int, right: int) -> int:
preR = self.prefixSum[right] # 0부터 right까지의 누적합
preL = self.prefixSum[left-1] if left > 0 else 0 # 0부터 left-1까지의 누적합 (left가 0이면 0으로 처리)
return preR - preL # right까지 합 - left-1까지 합 = [left, right] 구간합'LeetCode > NeetCode' 카테고리의 다른 글
| [Prefix Sums] 724. Find Pivot Index (0) | 2025.04.05 |
|---|---|
| [Prefix Sums] 304. Range Sum Query 2D - Immutable (적분영상) (0) | 2025.04.05 |
| [Sliding Window Fixed Size] 1343. Number of Sub-arrays of Size K and Average Greater than or Equal to Threshold (0) | 2025.04.04 |
| [카데인 Kadane] 978. Longest Turbulent Subarray ★★★★★ (0) | 2025.04.04 |
| Graph 그래프 이론 (0) | 2025.04.01 |