題目:原題鏈接(簡單)
解法 | 時間複雜度 | 空間複雜度 | 執行用時 |
---|---|---|---|
Ans 1 (Python) | O(j-i) | O(n) | 7296ms (5.37%) |
Ans 2 (Python) | O(1) | O(n) | 100ms (75.87%) |
LeetCode的Python執行用時隨緣,只要時間複雜度沒有明顯差異,執行用時一般都在同一個量級,僅作參考意義。
解法一(基本實現方法):
class NumArray:
def __init__(self, nums: List[int]):
self.nums = nums
def sumRange(self, i: int, j: int) -> int:
ans = 0
for k in range(i, j + 1):
ans += self.nums[k]
return ans
解法二(緩存求和結果):
class NumArray:
def __init__(self, nums: List[int]):
self.adds = [0]
add = 0
for i in range(len(nums)):
add += nums[i]
self.adds.append(add)
print(self.adds)
def sumRange(self, i: int, j: int) -> int:
return self.adds[j + 1] - self.adds[i]