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

Every day a Leetcode

题目来源:2772. 使数组中的所有元素都等于零

解法1:差分数组

令差分数组 diff[i] = nums[i] - nums[i - 1],特别地,diff[0] = nums[0],diff[n] = -nums[n-1]。

可以发现,差分数组具有以下性质:

  1. 原数组中所有元素都等于零,等价于差分数组中所有元素都等于零。
  2. 如果我们将原数组中以 nums[i] 为开头且长度为 k 的子数组中每个元素 -1,等价于 diff[i]-1,diff[i+k]+1。这样我们就将子数组的运算转化为了单个元素的运算。

考虑 diff[i](0<=i<=n-k):

  • 如果 diff[i]<0,因为不存在下标 −k 所以无解。
  • 如果 diff[i]>0,我们需要对 diff[i] 进行 -1 操作把它变成 0,同时将 diff[i+k] += diff[i]。

最后遍历数组 diff,全为 0 返回 true,否则返回 false。

代码:

/** @lc app=leetcode.cn id=2772 lang=cpp** [2772] 使数组中的所有元素都等于零*/// @lc code=start// 差分数组class Solution
{
public:bool checkArray(vector<int> &nums, int k){int n = nums.size();// 计算差分数组vector<int> diff(n + 1, 0);diff[0] = nums[0];for (int i = 1; i < n; i++)diff[i] = nums[i] - nums[i - 1];diff[n] = -nums[n - 1];// 从左到右对差分数组里的每个元素进行操作for (int i = 0; i + k <= n; i++)if (diff[i] > 0){diff[i + k] += diff[i];diff[i] = 0;}// 检查差分数组中是否所有元素均为 0for (int i = 0; i <= n; i++)if (diff[i] != 0)return false;return true;}
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中 n 是数组 nums 的元素个数。

空间复杂度:O(n),其中 n 是数组 nums 的元素个数。

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

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

相关文章

用Audio2Face导出Unity面部动画

开始之前说句话&#xff0c;新年前最后一篇文章了 一定别轻易保存任何内容&#xff0c;尤其是程序员不要轻易Ctrl S 在A2F去往Unity的路上&#xff0c;还要经历特殊Blender&#xff0c;自己电脑中已下载好的可能不是很好使。 如果想查看UE相关的可以跳转到下边这两篇链接 1. …

Linux小知识分享-压缩包解压之后属主和属组不是当前用户问题

今天给大家分享一个Linux小知识 背景 假设当前Linux下用户是root&#xff0c;我们从网络上或者其他环境下载了个压缩包进行本地解压。 结果发现解压之后的文件或者文件夹的 属主和属主 都不是当前用户root # 检查当前用户 [roottest-xxxx-01-vm /tmp/colinspace ]# id uid0(…

IDEA 配置和缓存目录 设置

IDEA系列产品&#xff0c;一般会在用户目录创建 配置 和 缓存 目录&#xff1a; %APPDATA%\JetBrains%LOCALAPPDATA%\JetBrains 一般会展示为&#xff1a; C:\Users\<username>\AppData\Roaming\JetBrainsC:\Users\<username>\AppData\Local\JetBrains 一般占用…

MtfLive直播导航PHP源码,附带系统搭建教程

将自动采集斗鱼、虎牙、触手、YY、章鱼、电视直播按分类/关键词聚合&#xff0c;用户选择分类&#xff0c;可以观看到全网该关键词下正在直播的内容。 特点 PC站和H5移动站自适应 自动缓存&#xff0c;避免频繁抓取数据 自定义抓取采集规则&#xff0c;同时支持HTML和JSON …

【Java实战】农行支付对接流程开发详解

文章目录 前言📝一、环境配置1.对接资料2.导入接口包 JAR 文件3.引入配置文件二、接口对接1.微信支付2.农行页面支付3.支付回调4.担保确认及担保确认查询总结前言📝 在实际开发中,涉及金钱那就少不了对接支付,常用的支付方式有微信支付和支付宝支付,这两个在其官网都有…

Character Auras 3

该包包含12种惊人的光环效果! 列表: 秋天的氛围 血光 五彩纸屑的光环 疾风 火光光环 森林氛围 治疗光环 冰系光环 爱的光环 毒气环 星光气场 所有预制件都已准备好用于游戏,只需将它们拖放到游戏中即可! 下载: ​​Unity资源商店链接 资源下载链接 效果图:

OJ刷题:《剑指offer》之左旋字符串!

目录 1.题目描述 2.方法一&#xff08;元素一一挪&#xff09; 2.1算法解析 2.2代码实现 3.方法二&#xff08;三次逆置&#xff09; 3.1算法解析 3.2代码实现 4.方法三&#xff08;库方法&#xff09; 4.1算法解析 4.2代码实现 5.完结散花 创作不易&#xff0c;宝子…

以太网-环回地址

文章目录 环回地址在同一台电脑上开发两个可执行文件(EXE)并使用环回地址进行通信交互Python示例代码环回地址 环回地址是指在计算机网络中,用来标识设备自身的一个逻辑地址,也被称为本地环回地址。它是一个虚拟的接口,可以确保路由 ID 的稳定性,且不会出现链路失效的情…

实习记录——第九天

今天早上下雨了&#xff0c;不过我没有迟到&#xff0c;刚刚好到公司&#xff0c;早上说的渗透测试的项目我并没有看见PM来找我&#xff0c;我还以为他把我忘了&#xff0c;到了中午我实在耐不住性子&#xff0c;就去问他了&#xff0c;他甩给我一些资产&#xff0c;当时觉得他…

TDengine 签约杭州云润,助力某大型水表企业时序数据处理

在智慧电表水表的数据采集和存储过程中&#xff0c;时序数据处理成为一个重要的问题。由于电表水表数据具有时间序列的特点&#xff0c;传统的数据库和数据处理方式往往难以满足大规模数据的高速采集、存储和实时分析需求。因此&#xff0c;越来越多的企业开始进行数据架构改造…

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏8(附项目源码)

本节最终效果演示 文章目录 本节最终效果演示系列目录前言配置可使用物品功能下载一些水果模型代码实现使用物品 源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第23篇中&#xff0c…

Java面对对象

Java面向对象 面对对象概述&#xff0c;类与对象&#xff0c;继承&#xff0c;重写与重载&#xff0c;多态&#xff0c;抽象&#xff0c;封装&#xff0c;包&#xff0c;泛型&#xff0c;异常 面对对象概述 什么是面向对象&#xff08;OOP&#xff09; 面向对象(Object Ori…

程控设备和电脑通信的总线和协议选择

文章目录 程控设备都通过什么协议和总线和电脑通信?工控设备都使用什么通信协议与电脑通信?各种工控设备通信协议的优缺点如何选择适合工控设备的通信协议?各种工控设备通信总线的优缺点如何判断一种总线是否适合特定的应用场景?程控设备都通过什么协议和总线和电脑通信? …

【python3.8 pre-commit报错】记录pre-commit install报错

一、问题 在执行pre-commit install --allow-missing-config命令时&#xff0c;报错 Traceback (most recent call last):File "C:\ProgramData\Anaconda3\envs\py38\lib\runpy.py", line 192, in _run_module_as_mainreturn _run_code(code, main_globals, None,F…

html,css,js速成

准备&#xff1a;vscode配好c&#xff0c;python&#xff0c;vue环境。 1. html hypertext markup language(超文本标记语言) 1. 基础语法 一个html元素由开始标签&#xff0c;填充文本&#xff0c;结束标签构成。 常见标签说明<b></b>粗体<i></i>…

免费分享一套SpringBoot+Vue药店(药房)管理系统,帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue药店(药房)管理系统 &#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue药店(药房)管理系统 Java毕业设计_哔哩哔哩_bilibili【免费】SpringBootVue药店(药房)管理系统 Java毕业设计…

Jmeter学习系列之五:基础线程组(Thread Group)

前言 线程组是一系列线程的集合,每一个线程代表着一个正在使用应用程序的用户。在 jmeter 中,每个线程意味着模拟一个真实用户向服务器发起请求。 在 jmeter 中,线程组组件运行用户设置线程数量、初始化方式等等配置。 例如,如果你设置线程数为 100,那么 jmeter 将创建…

C语言字符字符串函数:strcpy、strcat、strcmp介绍和模拟实现以及stnrcpy、strncat、strncmp介绍(近万字详解,建议三连收藏)

目录 1.strcpy(字符串拷贝函数&#xff09; 1.1函数介绍 1.2函数使用示范 1.3函数模拟实现 2.strcat(字符串追加函数&#xff09; 2.1函数介绍 2.2函数使用示范&#xff1a; 2.3函数模拟实现 &#xff1a; 2.4思考&#xff1a;字符串可以自己给自己追加吗&#xff1f; …

leetcode-汇总区间

228. 汇总区间 题解&#xff1a; 这是一个区间合并的问题。我们可以遍历数组&#xff0c;对于每个元素&#xff0c;如果它与前一个元素的差值大于1&#xff0c;那么我们就找到了一个新的区间&#xff0c;将这个区间添加到结果列表中。否则&#xff0c;我们就更新当前区间的结…

EDI报文到Excel转换方案详解

EDI目前已广泛应用于电子、物流、汽车、零售等行业。 越来越多的交易伙伴要求建立EDI连接&#xff0c;通过EDI来对接上下游交易伙伴&#xff0c;收发业务单据。 当我们与新的交易伙伴建立EDI连接时&#xff0c;有多种实施方案可供选择&#xff0c;如果您的单据量较少&#xf…