news 2026/5/3 9:57:27

树状数组

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树状数组

lc2659

树状数组统计已删除元素,按数值升序遍历元素位置

分前后段计算每次删除的移动步数并累加,求解清空数组的总操作数。

// 树状数组模板
class BIT {
vector<int> tree;
public:
BIT(int n) : tree(n) {}

// 将下标 i 上的数加一
void inc(int i) {
while (i < tree.size()) {
++tree[i];
i += i & -i;
}
}

// 返回闭区间 [1, i] 的元素和
int sum(int x) {
int res = 0;
while (x > 0) {
res += tree[x];
x &= x - 1;
}
return res;
}

// 返回闭区间 [left, right] 的元素和
int query(int left, int right) {
return sum(right) - sum(left - 1);
}
};

class Solution {
public:
long long countOperationsToEmptyArray(vector<int> &nums) {
int n = nums.size(), id[n];
iota(id, id + n, 0);
sort(id, id + n, [&](int i, int j) {
return nums[i] < nums[j];
});

long long ans = n; // 先把 n 计入答案
BIT t(n + 1); // 下标从 1 开始
int pre = 1; // 上一个最小值的位置,初始为 1
for (int k = 0; k < n; ++k) {
int i = id[k] + 1; // 下标从 1 开始
if (i >= pre) // 从 pre 移动到 i,跳过已经删除的数
ans += i - pre - t.query(pre, i);
else // 从 pre 移动到 n,再从 1 移动到 i,跳过已经删除的数
ans += n - pre + i - k + t.query(i, pre - 1);
t.inc(i); // 删除 i
pre = i;
}
return ans;
}
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 16:44:56

一道“找数”的题,为什么能成为算法世界的常青树?

一道“找数”的题,为什么能成为算法世界的常青树? 从 Missing Number 说起 一、引子:这题你肯定见过,但你真的“理解”了吗? 很多人第一次见到这道题,心里都会冒出一句话: “这也叫算法题?小学数学吧?” 题目很简单: 给你一个包含 0 ~ n 中 n 个不同数字 的数组, …

作者头像 李华
网站建设 2026/5/1 8:05:09

.nvue页面实现画笔绘制功能,用原生html导入nvue页面使用还可以截图(画笔 清空 橡皮擦 改颜色 禁用画笔 截图-是视频画面加绘制合成一张图片截图)-我花80块钱找淘宝都没弄出来,自己写的

功能 安卓app上面nvue 视频上方绘制&#xff08;vue2&#xff09;①新建一个draw.html文件&#xff08;里面功能有画笔 清空 橡皮擦 改颜色 禁用画笔 截图-是视频画面加绘制合成一张图片截图&#xff09;②webViewUrl: /static/draw.html,③<!-- 画布 绘制层 --><web-…

作者头像 李华
网站建设 2026/5/2 0:34:56

小学生的题:求桌子多高

设桌子的高度为 h 厘米&#xff0c;坐着的猫高度为 a 厘米&#xff0c;趴着的猫高度为 b 厘米。根据图中的信息&#xff0c;我们可以得到两个方程&#xff1a;ha−bhb−a​11&#xff08;左图&#xff1a;桌子高度 坐猫高度 - 趴猫高度 11&#xff09;7&#xff08;右图&…

作者头像 李华
网站建设 2026/5/2 3:36:55

nodejs基于vue的数据库课程知识点在线教学网站系统_70teu

文章目录系统概述技术架构核心功能实现示例扩展性--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 Node.js与Vue.js结合的在线教学网站系统&#xff0c;专为数据库课程设计&#xff0c;提供知识点学习、交…

作者头像 李华
网站建设 2026/5/1 0:23:21

YOLOv8目标检测:从理论到实战的飞跃之旅

目录一、YOLOv8&#xff0c;目标检测的新宠儿二、YOLOv8 核心探秘2.1 架构解析2.2 工作流程2.3 优势剖析三、实战项目开启3.1 环境搭建3.2 数据准备3.3 模型训练3.4 模型评估3.5 推理应用四、实战案例展示4.1 工业质检实例4.2 智能安防应用五、常见问题与解决方案5.1 显存不足5…

作者头像 李华