Skip to content

Prepare For Coder Interview – Denny

  • Basic
  • Medium
  • Hard
  • Architect
  • Life

LeetCode: Range Sum Query – Immutable

Posted on January 12, 2018July 26, 2020 by braindenny

Range Sum Query – Immutable



Similar Problems:

  • CheatSheet: Leetcode For Code Interview
  • CheatSheet: Common Code Problems & Follow-ups
  • Tag: #oodesign, #presum, #rangesum

Given an integer array nums, find the sum of the elements between indices i and j (i <= j), inclusive.

Example:
Given nums = [-2, 0, 3, -5, 2, -1]

sumRange(0, 2) -> 1
sumRange(2, 5) -> -1
sumRange(0, 5) -> -3

Note:

  • You may assume that the array does not change.
  • There are many calls to sumRange function.

Github: code.dennyzhang.com

Credits To: leetcode.com

Leave me comments, if you have better ways to solve.


// https://code.dennyzhang.com/range-sum-query-immutable
// Basic Ideas: presum
// Complexity: Time O(n), Space O(n)
type NumArray struct {
    l []int
}

func Constructor(nums []int) NumArray {
    //  add a dummy node to caculate nums[0...i]
    l := make([]int, len(nums)+1)
    for i, v := range nums{
        l[i+1] = l[i] + v
    }
    return NumArray{l:l}
}


func (this *NumArray) SumRange(i int, j int) int {
    return this.l[j+1]-this.l[i]
}

/**
 * Your NumArray object will be instantiated and called as such:
 * obj := Constructor(nums);
 * param_1 := obj.SumRange(i,j);
 */
## https://code.dennyzhang.com/range-sum-query-immutable
class NumArray(object):

    def __init__(self, nums):
        """
        :type nums: List[int]
        """
        length = len(nums)
        self._nums = nums
        self._sum = [0] * length
        sum_value = 0
        for i in range(0, length):
            sum_value += nums[i]
            self._sum[i] = sum_value

    def sumRange(self, i, j):
        """
        :type i: int
        :type j: int
        :rtype: int
        """
        return self._sum[j] - (self._sum[i-1] if i>0 else 0)
# Your NumArray object will be instantiated and called as such:
# obj = NumArray(nums)
# param_1 = obj.sumRange(i,j)
linkedin
github
slack

Post Views: 6
Posted in AmusingTagged oodesign, presum, rangesum

Post navigation

LeetCode: Divide Two Integers
LeetCode: Self Dividing Numbers

Leave a Reply Cancel reply

Your email address will not be published.

Tags

#array #backtracking #bfs #binarytree #bitmanipulation #blog #classic #codetemplate #combination #dfs #dynamicprogramming #game #graph #greedy #heap #inspiring #interval #linkedlist #manydetails #math #palindrome #recursive #slidingwindow #stack #string #subarray #trie #twopointer #twosum binarysearch editdistance hashmap intervaldp knapsack monotone oodesign presum rectangle redo review rotatelist series sql treetraversal unionfind

Recent Posts

  • a
  • a
  • a
  • a
  • a

Recent Comments

    Archives

    Categories

    • Amusing
    • Basic
    • Easy
    • Hard
    • Life
    • Medium
    • Resource
    • Review
    • Series
    • Uncategorized
    Proudly powered by WordPress | Theme: petals by Aurorum.