Leetcode 307. Range Sum Query - Mutable (Python)
来源:互联网 发布:《java入门经典》 编辑:程序博客网 时间:2024/06/05 16:12
题目大意
构建一个数据结构,共有两种操作方式
- sumRange(i,j):计算[i,j]范围内数组和
- update(i,val):将位于数组坐标i的元素值改为val
算法
使用线段树即可
代码
class Segment_Tree(object): def add(self,start,end,llist): self.start = start self.end = end self.middle = (start+end)/2 self.num = 0 if self.start + 1 == self.end: self.num = llist[self.start] return self.num else: left = Segment_Tree() self.left = left self.num += left.add(start,self.middle,llist) right = Segment_Tree() self.right = right self.num += right.add(self.middle,end,llist) return self.num def update(self,index,num): if self.start == index and self.start + 1 == self.end: cha = num - self.num self.num = num return cha if index >= self.middle: cha = self.right.update(index,num) self.num += cha return cha else: cha = self.left.update(index,num) self.num += cha return cha def sum(self,start,end): if start == self.start and end == self.end: return self.num if end <= self.middle: return self.left.sum(start,end) elif start>= self.middle: return self.right.sum(start,end) else: left_val = self.left.sum(start,self.middle) right_val = self.right.sum(self.middle,end) return left_val + right_valclass NumArray(object): def __init__(self, nums): """ initialize your data structure here. :type nums: List[int] """ if len(nums) == 0: nums.append(0) self.nums = nums self.st = Segment_Tree() self.st.add(0,len(self.nums),self.nums) def update(self, i, val): """ :type i: int :type val: int :rtype: int """ self.st.update(i,val) return val def sumRange(self, i, j): """ sum of elements nums[i..j], inclusive. :type i: int :type j: int :rtype: int """ return self.st.sum(i,j+1)
0 0
- Leetcode 307. Range Sum Query - Mutable (Python)
- leetcode 307. Range Sum Query - Mutable
- LeetCode 307. Range Sum Query - Mutable
- LeetCode 307. Range Sum Query - Mutable
- [LeetCode]Range Sum Query - Mutable
- Range Sum Query - Mutable -leetcode
- leetcode Range Sum Query - Mutable
- Leetcode: Range Sum Query - Mutable
- Leetcode: Range Sum Query - Mutable
- leetcode, Range Sum Query - Mutable
- LeetCode Range Sum Query - Mutable
- leetcode - Range Sum Query - Mutable
- Range Sum Query - Mutable -- Leetcode
- leetcode Range Sum Query-Mutable
- 【Leetcode】Range Sum Query - Mutable
- 307. Range Sum Query - Mutable
- 307. Range Sum Query - Mutable
- 307. Range Sum Query - Mutable
- Opencv中.xml和.yml读写
- XGen 苹果IOS神器一键新机改串清理超级全息备份支持IOS789超IGV8使用分享(企鹅290093670)
- 来选择一款适合我网站的CMS建站程序吧?
- office2016永久免费激活码(office2016密钥)
- redhat7.2用户及用户组权限管理操作实例
- Leetcode 307. Range Sum Query - Mutable (Python)
- 如何让文章像病毒一样传播
- HDU 1686 求子串的数量
- 发朋友圈的九条建议
- HDU 1711 KMP求匹配位置
- HDU 2087 KMP求匹配串的重复次数
- HDU 2203 亲和串
- CnCrypt代码 之 为磁盘设备分配和移除盘符
- [LeetCode] 66. Plus One