博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode Range Sum Query - Mutable
阅读量:5088 次
发布时间:2019-06-13

本文共 1740 字,大约阅读时间需要 5 分钟。

题目连接

  

Range Sum Query - Mutable

Description

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

The update(i, val) function modifies nums by updating the element at index i to val.

Example:

Given nums = [1, 3, 5]sumRange(0, 2) -> 9update(1, 2)sumRange(0, 2) -> 8

 

Note:

  1. The array is only modifiable by the update function.
  2. You may assume the number of calls to update and sumRange function is distributed evenly.

线段树单点更新。。

class NumArray {public:	NumArray() = default;	NumArray(vector
&nums) { n = (int)nums.size(); if (!n) return; arr = new int[n << 2]; built(1, 1, n, nums); } ~NumArray() { delete []arr; } void update(int i, int val) { update(1, 1, n, i + 1, val); } int sumRange(int i, int j) { return sumRange(1, 1, n, i + 1, j + 1); }private: int n, *arr; void built(int root, int l, int r, vector
&nums) { if (l == r) { arr[root] = nums[l - 1]; return; } int mid = (l + r) >> 1; built(root << 1, l, mid, nums); built(root << 1 | 1, mid + 1, r, nums); arr[root] = arr[root << 1] + arr[root << 1 | 1]; } void update(int root, int l, int r, int pos, int val) { if (pos > r || pos < l) return; if (pos <= l && pos >= r) { arr[root] = val; return; } int mid = (l + r) >> 1; update(root << 1, l, mid, pos, val); update(root << 1 | 1, mid + 1, r, pos, val); arr[root] = arr[root << 1] + arr[root << 1 | 1]; } int sumRange(int root, int l, int r, int x, int y) { if (x > r || y < l) return 0; if (x <= l && y >= r) return arr[root]; int mid = (l + r) >> 1, ret = 0; ret += sumRange(root << 1, l, mid, x, y); ret += sumRange(root << 1 | 1, mid + 1, r, x, y); return ret; }};

转载于:https://www.cnblogs.com/GadyPu/p/5011135.html

你可能感兴趣的文章
bzoj 2456: mode【瞎搞】
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
[GraphQL] Reuse Query Fields with GraphQL Fragments
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
两种最常用的Sticky footer布局方式
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
Java程序IP v6与IP v4的设置
查看>>
RUP(Rational Unified Process),统一软件开发过程
查看>>
数据库链路创建方法
查看>>
Enterprise Library - Data Access Application Block 6.0.1304
查看>>
重构代码 —— 函数即变量(Replace temp with Query)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>
聚合与组合
查看>>
jQuery如何获得select选中的值?input单选radio选中的值
查看>>
设计模式 之 享元模式
查看>>