LeetCode 307 區域和檢索

2021-10-10 13:15:51 字數 945 閱讀 2738

給定乙個整數陣列  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...