算法专题:差分数组

文章目录

  • 前置知识
    • 构建一个差分数组
    • 操作一个连续区间
  • 练习习题
    • 1094. 拼车
    • 1109. 航班预订统计
    • 1450. 在既定时间做作业的学生人数
    • 2406. 将区间分为最小组数
    • 2381. 字母移位II
    • 2772. 使数组中的所有元素都等于零

前置知识

构建一个差分数组

void func(int * lb1,int len)
{int * lb2=new int [len];lb2[0]=lb1[0];for (int i=1;i<len;i++)lb2[i]=lb1[i]-lb1[i-1];
}

操作一个连续区间

void func(int * lb,int len1,int begin,int len2,int x)
{lb[begin]+=x;if (begin+len2<len1)lb[begin+len2]-=x;
}

练习习题

1094. 拼车

class Solution {
public:bool carPooling(vector<vector<int>>& trips, int capacity) {int lb[1001] {};for (int i=0;i<trips.size();i++){lb[trips[i][1]]+=trips[i][0];lb[trips[i][2]]-=trips[i][0];}int count=0;for (int i=0;i<1001;i++){count+=lb[i];if (count>capacity) return false;}return true;}
};

1109. 航班预订统计

class Solution {
public:vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) {int * lb=new int [n+1];for (int i=0;i<n+1;i++) lb[i]=0;for (int i=0;i<bookings.size();i++){lb[bookings[i][0]-1]+=bookings[i][2];lb[bookings[i][1]]-=bookings[i][2];}vector<int> result(n,0);result[0]=lb[0];for (int i=1;i<n;i++)result[i]=result[i-1]+lb[i];delete [] lb;return result;}
};

1450. 在既定时间做作业的学生人数

class Solution {
public:int busyStudent(vector<int>& startTime, vector<int>& endTime, int queryTime) {int time[1000] {};for (int i=0;i<startTime.size();i++){time[startTime[i]-1]+=1;if (endTime[i]<1000) time[endTime[i]]-=1;}for (int i=1;i<1000;i++)time[i]=time[i-1]+time[i];return time[queryTime-1];}
};

2406. 将区间分为最小组数

class Solution {
public:int minGroups(vector<vector<int>>& intervals) {//1e6是双精度浮点数int lb[int(1e6+1)] {};for (int i=0;i<intervals.size();i++){lb[intervals[i][0]-1]+=1;lb[intervals[i][1]]-=1;}int result=lb[0],count=lb[0];for (int i=1;i<1e6;i++){count=count+lb[i];if (count>result) result=count;}return result;}
};

2381. 字母移位II

class Solution {
public:string shiftingLetters(string s, vector<vector<int>>& shifts) {int * lb1=new int [s.size()+1];for (int i=0;i<s.size()+1;i++) lb1[i]=0;for (int i=0;i<shifts.size();i++){int x=shifts[i][2]==1?1:-1;lb1[shifts[i][0]]+=x;lb1[shifts[i][1]+1]-=x;}int * lb2=new int [s.size()];lb2[0]=lb1[0];for (int i=1;i<s.size();i++)lb2[i]=lb2[i-1]+lb1[i];string result;for (int i=0;i<s.size();i++){int x=lb2[i];x+=26*1e5;x%=26;if (s[i]+x<='z') result+=char(s[i]+x);else result+=char(s[i]+x-26);}delete [] lb1;delete [] lb2;return result;}
};

2772. 使数组中的所有元素都等于零

class Solution {
public:bool checkArray(vector<int> &nums, int k) {int * lb=new int [nums.size()];for (int i=0;i<nums.size();i++) lb[i]=0;lb[0]=nums[0];for (int i=1;i<nums.size();i++)lb[i]=nums[i]-nums[i-1];for (int i=0;i<nums.size()-k;i++){if (lb[i]<0) return false;lb[i+k]+=lb[i];}for (int i=nums.size()-k+1;i<nums.size();i++)if (lb[i]!=0) return false;delete [] lb;return true;}
};

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

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

相关文章

详解React与Vue的性能对比

React 和 Vue 是当前最流行的前端开发框架之一。它们都具有高度的灵活性和可扩展性&#xff0c;但在某些方面有所不同。在本篇文章中&#xff0c;我将详细介绍 React 和 Vue 这两个技术&#xff0c;并比较它们的优点和缺点。 目录 1. React&#xff1a; 1.1 优点&#xff1a; …

Qt之QxOrm

QxORM介绍 QxORM库是一种为了C/Qt开发者服务的关系对象映射型数据库的类库&#xff0c;每个类都有简单的C设置函数&#xff0c;你可以接触到如下特性&#xff1a; 持久性&#xff1a;支持最常见的数据库&#xff0c;如 SQLite、MySQL、PostgreSQL、Oracle、MS SQL Server、Mon…

2023年第十四届蓝桥杯软件赛省赛总评

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周。 在QQ群上交流答疑&am…

VCG 网格清洗之移除小组件

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 基于之前连通性的思路,我们可以很容易获取到许多连通的面片集合,这里我们根据指定的数量阈值来剔除较小的面片集合,以此达到网格清洗的目的。 二、实现代码 //VCG #include <vcg/complex/algorithms/create/…

[AI争霸] 普通人看ChatGPT和文心一言那个更好

文章目录 引言便利性准确性总结 引言 从2022/2/24号openAI正式发布chatgpt第一个版本以来&#xff0c;到2023年中旬openAI宣布chatgpt成为用户增长量最快的软件&#xff0c;随后掀起的大模型热。随后国内的各大厂商纷纷推出自己的大模型&#xff0c;首当其冲的就是百度的文心一…

Springboot整合Canal -- Canal 多客户端

文章目录 前言一、批量注册bean定义&#xff1a;1.1 定义Canal注解&#xff1a;1.2 canal bean定义注册&#xff1a;1.3 canal bean 生成&#xff1a; 二、canal客户端获取mysql数据变动2.1 canal客户端2.2 消息处理 总结参考 前言 在项目中如果想要多个Canal 客户端通过tcp直…

Redis 消息队列和发布订阅

文章目录 基本模式生产者消费者原理&模型redis实现java实现 发布者订阅者原理&模型redis实现java实现 stream模式原理&模型工作原理redis实现Java实现 选型外传 基本模式 采用redis 三种方案&#xff1a; ● 生产者消费者&#xff1a;一个消息只能有一个消费者 ●…

Smart Tomcat

Smart Tomcat插件可以让idea图形化界面让代码部署到tomcat上达成一键打包部署的过程 下面是idea安装使用Smart Tomcat的过程 我们直接在plugins(插件)里搜索Tomcat 然后下载第一个 然后点击Apply(应用) 在一个项目中 第一次使用时要进行配置Smart Tomcat Name 可以不配置…

vscode安装和基本设置

目录 vscode安装和基本设置1.HTML标签2.标签属性3.HTML基本结构4.安装vscode5.安装Live Server插件6.HTML注释7.文档说明8.HTML字符编码9.HTML设置语言10.HTML标准结构 vscode安装和基本设置 1.HTML标签 标签 又称 元素&#xff0c;是HTML的基本组成单位。标签分为&#xff1…

JSP简单学习

jsp是在html中嵌入java代码 jsp也是在j2ee服务端中的java组件 第一次运行 在第一次运行jsp代码时会经历以下步骤&#xff0c;将jsp转为java代码&#xff0c;将java代码转为class文件。 所以通常会比较慢&#xff0c;编译后就好多了。 四大作用域 requestsessionpageapplica…

使用pdfbox 为 PDF 增加水印

使用pdfbox 为 PDF增加水印https://www.jylt.cc/#/detail?activityIndex2&idbd410851b0a72dad3105f9d50787f914 引入依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>3.0.1</ve…

cesiumlab切片通过arcgisjs加载

cesiumlab切片通过arcgisjs加载 需要注意2个地方&#xff0c;一个是tileInfo&#xff0c;一个是getTileUrl&#xff0c; 在tileInfo中定义好cesiumlab切片的相关信息。 getTileUrl 格式化url的格式。 注意设置编辑&#xff0c;避免超出范围报404。 <html lang"en"…

【栈】【字符串和int类型转化】Leetcode 150 逆波兰表达式求值

【栈】【字符串和int类型转化】Leetcode 150 逆波兰表达式求值 解法1 栈 ---------------&#x1f388;&#x1f388;题目链接 Leetcode 150 逆波兰表达式求值 &#x1f388;&#x1f388;------------------- 解法1 栈 字符串转化为int类型数据: Integer.parseInt(s) Long.p…

java多线程传参数

package com.myThread;public class AdminThread extends Thread{private String name;public void AdminThread(String name){this.name name;}Overridepublic void run() {//线程开始之后执行的代码for (int i 0; i < 100; i) {System.out.print(getName()"线程…

Web前端-移动web开发——flex布局

移动web开发——flex布局 1.0传统布局和flex布局对比 1.1传统布局 兼容性好布局繁琐局限性&#xff0c;不能再移动端很好的布局 1.2 flex布局 操作方便&#xff0c;布局极其简单&#xff0c;移动端使用比较广泛pc端浏览器支持情况比较差IE11或更低版本不支持flex或仅支持部…

ChatGPT 与生成式 AI 的崛起:第二十六章到第三十三章

原文&#xff1a;Rise of Generative AI and ChatGPT 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第二十五章&#xff1a;ChatGPT 用于国家网络安全和技术政策 介绍 恐怖分子、罪犯、警察、国防、执法机构、工程师、作家和学生等都在使用 ChatGPT&#xff0c;这是…

如何进行产品的人机交互设计?

产品的人机交互设计是指通过用户界面和用户体验设计来优化产品与用户之间的交互过程&#xff0c;从而提高产品的易用性、可用性和用户满意度。人机交互设计需要考虑用户的需求、行为模式、心理感受以及技术实现&#xff0c;下面我将介绍如何进行产品的人机交互设计。 首先&…

蓝桥备战 每日一题 (1)

二分法 代码如下&#xff1a; #include<iostream> #define ll long long using namespace std;ll query(ll n) {ll ret 0;while (n > 0) {ret n / 5; // 要计算 从 1 到 n 中 是 5 的倍数的个数&#xff0c;但是要注意 如果是 25 &#xff0c;要计算两次n / 5;}r…

kubeadm常用命令

一 kubeadm token 命令 "kubectl和kubeadm命令执行的时候" 默认情况下,kubectl 在 $HOME/.kube 目录下查找名为config的文件可以通过设置KUBECONFIG环境变量或设置--kubeconfig参数来指定其他Kubeconfig文件 ​ 解决1&#xff1a; k8s token 过期 的解决方法 ① 总…

【学习笔记】[AGC063E] Child to Parent

提供一个多项式做法。 分别设 f u , i , g u , i f_{u,i},g_{u,i} fu,i​,gu,i​表示以 u u u为根时&#xff0c; a u i a_ui au​i和 a u ≥ i a_u\ge i au​≥i的方案数&#xff0c;合并子树 v v v时&#xff0c;转移如下&#xff1a; f u , i ∑ f u , i − k r g v . k…