給定乙個整數陣列 nums,求出陣列從索引 i 到 j (i ≤ j) 範圍內元素的總和,包含 i, j 兩點。
update(i, val) 函式可以通過將下標為 i 的數值更新為 val,從而對數列進行修改。
利用樹狀陣列實現。
from typing import *
class numarray:
def __init__(self, nums: list[int]):
self.n = len(nums)
self.c = [0] * (self.n + 2)
self.nums = nums
for i, val in enumerate(nums):
self.add_val(i + 1, val)
def lowbit(self, i):
return i & (-i)
def add_val(self, idx, val):
while idx <= self.n:
self.c[idx] += val
idx += self.lowbit(idx)
def get_sum(self, i):
tem = 0
while i > 0:
tem += self.c[i]
i -= self.lowbit(i)
return tem
def update(self, i: int, val: int) -> none:
self.add_val(i + 1, val - self.nums[i])
self.nums[i] = val
def sumrange(self, i: int, j: int) -> int:
return self.get_sum(j + 1) - self.get_sum(i)
307 區域和檢索 陣列可修改
超時 leetcode 307.range sum query mutable 使用sum陣列的思路 tle class numarray sum new int nums.length 1 sum 0 0 for int i 1 i nums.length i public int sumrang...
307 區域和檢索 陣列可修改
題目描述 給定乙個整數陣列 nums,求出陣列從索引 i 到 j i j 範圍內元素的總和,包含 i,j 兩點。update i,val 函式可以通過將下標為 i 的數值更新為 val,從而對數列進行修改。示例 given nums 1,3,5 sumrange 0,2 9 update 1,2 s...
307 區域和檢索 陣列可修改
給定乙個整數陣列 nums,求出陣列從索引 i 到 j i j 範圍內元素的總和,包含 i,j 兩點。update i,val 函式可以通過將下標為 i 的數值更新為 val,從而對數列進行修改。示例 given nums 1,3,5 sumrange 0,2 9 update 1,2 sumran...