树状数组练习

在这里插入图片描述

先看一下最后一题,这是一个树状数组的题目,那就水一下吧,但是由于没有注意问题,wa了很多次

const int N = (int)1e5 + 5;
int n;
int flag[N];
int dp[N];
class Solution {
public:vector<int> countOfPeaks(vector<int>& nums, vector<vector<int>>& queries) {n = nums.size();memset(dp,0,sizeof dp);memset(flag,0,sizeof flag);vector<int> ans;for (int i = 1; i < n - 1; i++) {if (nums[i] > nums[i + 1] && nums[i] > nums[i - 1]) {flag[i + 1] = 1;add(i + 1, 1);}}//         for (int i = 1; i <= n; i++) {//     cout << i << " " << find(i) - find(i - 1) << endl;// }for (int i = 0; i < queries.size(); i++) {if (queries[i][0] == 2) {int index = queries[i][1], val = queries[i][2];nums[index] = val;fun(index, nums); fun(index - 1, nums); fun(index + 1, nums);//                 for (int i = 1; i <= n; i++) {//     cout << i << " " << find(i) - find(i - 1) << endl;// }}else {//ans.push_back(find(queries[i][2]) - find(queries[i][1] + 2));int temp = find(queries[i][2] + 1) - find(queries[i][1]);if (flag[queries[i][2] + 1]) temp--;if (flag[queries[i][1] + 1]) temp--;ans.push_back(temp>0?temp:0);}}return ans;}int lowbit(int x) {return x & (-x);}void add(int x, int p) {for (int i = x; i <= n; i += lowbit(i)) {dp[i] += p;}}int find(int x) {if (x == 0) return 0;return dp[x] + find(x - lowbit(x));}void fun(int index, vector<int>& nums) {if (index <= 0 || index >= (n - 1)) return;if (nums[index] > nums[index + 1] && nums[index] > nums[index - 1]) {if (flag[index + 1]) return;add(index + 1, 1), flag[index + 1] = 1;}else {if (!flag[index + 1]) return;add(index + 1, -1), flag[index + 1] = 0;}}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/853861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

趣味C语言——【猜数字】小游戏

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ &#x1f389;创作不易&#xff0c;请多多支持&#x1f389; &#x1f308;感谢大家的阅读、点赞、收藏和关注&#x1f495; &#x1f339;如有问题&#xff0c;欢迎指正 感谢 目录 代码…

重生之 SpringBoot3 入门保姆级学习(20、场景整合 Docker 的 Redis 对接与基础使用)

重生之 SpringBoot3 入门保姆级学习&#xff08;20、场景整合 Docker 的 Redis 对接与基础使用&#xff09; 6.3 整合 Redis 6.3 整合 Redis 1、创建新项目编写 application.properties 配置文件 # redis 配置 spring.data.redis.host192.168.1.4 spring.data.redis.port6379如…

SVM-SMO算法

SMO算法思想 上面这个优化式子比较复杂&#xff0c;里面有m个变量组成的向量α&#x1d6fc;需要在目标函数极小化的时候求出。直接优化时很难的。SMO算法则采用了一种启发式的方法。它每次只优化两个变量&#xff0c;将其他的变量都视为常数。由于 ∑ i 1 m α i y i 0 \su…

鸿蒙开发:【PageAbility组件概述+配置】

PageAbility组件概述 PageAbility是包含UI、提供展示UI能力的应用组件&#xff0c;主要用于与用户交互。 开发者通过DevEco Studio开发平台创建PageAbility时&#xff0c;DevEco Studio会自动创建相关模板代码。PageAbility相关能力通过单独的featureAbility实现&#xff0c;…

DataWhale - 吃瓜教程学习笔记(一)

学习视频&#xff1a;第1章-绪论_哔哩哔哩_bilibili 西瓜书对应章节&#xff1a; 第一章 机器学习三观 What&#xff1a;什么是机器学习&#xff1f; 关键词&#xff1a;“学习算法” Why: 为什么要学机器学习&#xff1f; #### 1. 机器学习理论研究#### 2. 机器学习系统开…

HTML中的<br>、<hr>和<pre>标签使用指南

HTML提供了多种标签来控制文本的显示方式和页面布局。<br>、<hr>和<pre>是其中三种常用的标签&#xff0c;分别用于创建换行、水平线和预格式化文本。以下是这些标签的介绍和使用示例。 <br>标签&#xff1a;换行 <br>标签用于在文本中创建换行…

两个输入信号同时输入判断

/*******两个输入信号同时输入判断,2019 4 6**********/ /*******桥架机AB系统拉拔选择其中一个先拉进位置*****/ /***AB都在等待区A先前进,B在等待区A在中间B先前进****/ /***其中一个不在等待区拉拔后退PAST L259 CODE640****/ #include <REG52.H>…

推荐一个轻量级适合阅读的优秀C++开源项目

1. 问题2. 推荐理由3. 项目官方介绍 3.1. Source code3.2. Overview3.3. Library Features3.4. Testing Platforms3.5. Related Documents3.6. 源码仓库3.7. 概述3.8. 设计特点3.9. 已验证的平台3.10. 相关文档 1. 问题 在知乎上看到一个问题 有哪些轻量级适合阅读的优秀 C …

C语言实现动态栈

#include<stdio.h> #include<stdlib.h> #include<stdbool.h>// 每一个节点的数据类型 typedef struct Node {int data;struct Node * pNext; }NODE, * PNODE; // NODE等价 struct Node PNODE等价于 struct Node *// 栈 typedef struct Stack {PNODE pTop;P…

【数据库编程-SQLite3(一)】sqlite3数据库在Windows下的配置及测试

学习分析 1、资源准备2、环境配置2.1、将资源包下载解压缩保存。2.2、在QT中创建工程,配置环境 3、测试配置3.1、 sqlite3_open函数3.2、sqlite3_close函数3.3、代码测试 1、资源准备 资源包 2、环境配置 2.1、将资源包下载解压缩保存。 解压缩得到以下文件 2.2、在QT中创建…

力扣每日一题 6/13 反悔贪心算法

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2813.子序列最大优雅度【困难】 题目&#xff1a; 给你一个长度为 n 的二…

上海2024年二手房最新成交历史数据

标签: 上海2024年二手房最新成交历史数据; 二手房; 时间: 2024年 上海市4月二手房网签套数:18230套 上海市5月二手房网签套数:19396套 上海市6月二手房网签套数: 6月1日:924套 6月2日:886套 6月3日:720套 6月4日:750套 6月5日:823套 6月6日:902套 6月7日:968套…

红黑树的基本概念

红黑树 特征 [1] 根节点是黑色的[2] 每个叶子节点都是黑色的空节点(NIL), 也就是说&#xff0c;叶子节点不存储数据[3] 任何相邻的节点都不能同时为红色&#xff0c;也就是说&#xff0c;红色节点是被黑色节点隔开的[4] 每个节点&#xff0c;从该节点到达其可达叶子节点的所有路…

阿里云香港服务器怎么样?

大家都知道阿里云是国内最受欢迎的云服务商&#xff0c;那么阿里云香港服务器究竟怎么样呢&#xff1f;和硅云的香港服务器用于做外贸网站等业务相比各有哪些优缺点呢&#xff1f; 阿里云和硅云在香港云服务领域有着广泛的应用和良好的口碑。然而&#xff0c;它们各自的特点和…

mysql如何存储ip地址

在MySQL中存储IP地址通常可以使用 VARCHAR 或 CHAR 类型来存储。IP地址在IPv4的情况下通常是点分十进制的形式&#xff0c;例如 192.168.1.1&#xff0c;可以用 VARCHAR(15) 来存储&#xff0c;因为IPv4最多15个字符&#xff08;包括点号&#xff09;。如果你需要支持IPv6地址&…

【V8引擎】 V8引擎如何运行JS的

文章目录 概要什么是V8引擎为什么需要V8引擎比较常见的javascript引起有哪些呢&#xff1f;V8引擎是如何工作的&#xff08;V8引擎的解析过程&#xff09;V8引擎的做了哪些优化 概要 本篇文章主要是讲V8引擎如何运行JS&#xff0c;对运行JS做了哪些优化 什么是V8引擎 V8 是一…

深入探究Java Character类:全面解析与应用实例

在Java编程中,Character类是一个用于操作单个字符的强大工具。作为Java标准库中的一部分,Character类封装了基本数据类型char,并提供了一系列方法来操作和检查字符属性,例如字母、数字、空白字符等。理解并熟练使用Character类对开发高效、可靠的Java应用程序至关重要。本文…

开发做前端好还是后端好?

目录 一、引言 二、两者的对比分析 技能要求和专业知识&#xff1a; 职责和工作内容&#xff1a; 项目类型和应用领域&#xff1a; 就业前景和市场需求&#xff1a; 三、技能转换和跨领域工作 评估当前技能&#xff1a; 确定目标领域&#xff1a; 掌握相关框架和库&a…

按键输入消抖

按键输入是人机对话不可缺少的一部分&#xff0c;对于消抖设计&#xff0c;一种是软件消抖&#xff0c;一种是硬件消抖。但在单片机电路设计中&#xff0c;采用电容消抖才是最佳的选择&#xff0c;其次才是定时器消抖。 1、按键输入采用软件消抖 1)、通过定时器方式定时读取按…

Vue3【二十一】Vue 路由模式(createWebHashHistory /createWebHistory )和RouterLink写法

Vue3【二十一】Vue 路由模式&#xff08;createWebHashHistory /createWebHistory &#xff09;和RouterLink写法 Vue3【二十一】Vue 路由模式和普通组件目录结构 createWebHistory history模式&#xff1a;url不带#号&#xff0c;需要后端做url适配 适合销售项目 利于seo crea…