# Square root decomposition help

I’m using square root decomposition to solve a question on LeetCode.

Here is my code:

``````from math import ceil, sqrt

class NumArray:

def __init__(self, nums: List[int]):
self.nums = nums
self.blockSize = ceil(sqrt(len(nums)))
self.blocks = [0] * self.blockSize

for i in range(len(nums)):
self.blocks[i // self.blockSize] += nums[i]

def update(self, i: int, val: int) -> None:
oldVal = self.nums[i]
self.blocks[i // self.blockSize] += (val - oldVal)
self.nums[i] = val

def sumRange(self, i: int, j: int) -> int:
ans = 0

l = i // self.blockSize
r = j // self.blockSize

for index in range(i, (l + 1) * self.blockSize):
ans += self.nums[index]

for index in range(r * self.blockSize, j + 1):
ans += self.nums[index]

for index in range(l + 1, r):
ans += self.blocks[index]

return ans

# Your NumArray object will be instantiated and called as such:
# obj = NumArray(nums)
# obj.update(i,val)
# param_2 = obj.sumRange(i,j)
``````

I am getting wrong answer for inputs such as:

``````["NumArray","sumRange","update","sumRange"]
[[[-1]],[0,0],[0,1],[0,0]]
``````

and

``````["NumArray","update","sumRange","sumRange","update","sumRange"]
[[[9,-8]],[0,3],[1,1],[0,1],[1,-3],[0,1]]
``````

I’m not sure where I’m going wrong. I’m using this video as my guide for square root decomposition.