-
前缀和技巧
前缀和技巧适用于的场景是原始数组不会被修改的情况下,频繁地查询某个区间地累加和。
大致框架如下所示:
class preSum{ public: vector<int> sums; preSum(vector<int>& nums) { int len = nums.size(); sums.resize(len + 1); for (int i = 0; i < len; i++) { sums[i + 1] = sums[i] + nums[i]; } } int getSum(int left, int right) { return sums[right + 1] - sums[left]; } }
LeetCode例题 303 304 560
-
差分数组
差分数组主要适用于对原数组地某个区间的元素进行频繁的增减。
大致框架如下:
class Difference{ private: vector<int> diff; public: Difference(vector<int>& nums) { assert(nums.size() > 0); int len = nums.size(); diff.resize(len); diff[0] = nums[0]; for (int i = 1; i < len; i++) { diff[i] = nums[i] - nums[i - 1]; } } void increment(int i, int j, int val) { diff[i] += val; if (j + 1 <diff.size()) { diff[j + 1] -= val; } } vector<int> getResult() { vector<int> result; result[0] = diff[0]; for (int i = 1; i < diff.size(); i++) { result[i] = diff[i] + diff[i - 1]; } return result; } }
LeetCode例题有1109和1094
相关文章
- 10-13【leetcode 简单】 第一百零八题 找到所有数组中消失的数字
- 10-13leetcode每日刷题计划-简单篇day7
- 10-13滑动窗口之LeetCode209长度最小的子数组
- 10-13Leetcode每日刷题【中】--Day 13
- 10-13leetcode刷题笔记231 2的幂
- 10-13《LeetCode之每日一题》:166.数字转换为十六进制数
- 10-1320211104 LeetCode刷题 有效的完全平方数(难度:简单)
- 10-13leetcode刷题(63)——714. 买卖股票的最佳时机含手续费
- 10-13握草,火爆 GitHub《LeetCode 刷题手册》 完整 PDF 开放下载了
- 10-13leetcode第114题将二叉树展为链表