当前位置: 首页 > news >正文

【差分数组】个人练习-Leetcode-3229. Minimum Operations to Make Array Equal to Target

题目链接:https://leetcode.cn/problems/minimum-operations-to-make-array-equal-to-target/description/

题目大意:给出两个数组nums[]target[],可以对nums[]数组进行这样两种操作

  • 给某个区间内的子列全加1
  • 给某个区间内的子列全减1

求让nums[]target[]相等的最小操作次数。

思路:实际上就是让a[] = target[] - nums[]这个数组全为0,操作同样适用在a[]上。考虑到这样一个事实:对于数组的某个区间的统一操作,相当于对于差分数组的两个区间端点做操作。因此构造a[]的差分数组d[]。那么对a[i]a[j-1]的操作,就相当于对d[i]d[j]进行操作。比如对下面这个数组a[]的0~2个元素减去1后,d[0]d[3]发生了改变。

a: 1 1 1 -2			->	a: 0 0 0 -2 
d: 1 0 0 -3 2		->	d: 0 0 0 -2 2

并且对于d[]的改变,必然是某个d[i] += 1,某个d[j] -= 1。因此对于a[]某个区间进行操作,就相当于对d[]的两个端点,一个+1,一个-1。

因为最终会将a[]变为全0,此时d[]也全为0,那么就要对d[]进行一对对进行加减。然而反过来考虑,d[]从全0变为别的样子的时候,也是一对对加减上去的,因此实际上d[]中的元素之和一定为0。

那么只需要找正的元素个数即可,这就是最佳的方案。非最佳的方案对应着的是,在d[]的某个元素上+1又-1,这样必然会让操作次数增多。

完整代码

class Solution {
public:long long minimumOperations(vector<int>& nums, vector<int>& target) {int n = nums.size();for (int i = 0; i < n; i++) {nums[i] = target[i] - nums[i];}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];long long ans = 0;for (int i = 0; i <= n; i++) {ans += max(diff[i], 0);}return ans;}
};
http://www.lryc.cn/news/458932.html

相关文章:

  • HTML5--裸体回顾
  • 【网络安全】CVE-2024-46990: Directus环回IP过滤器绕过实现SSRF
  • 问:JVM的垃圾收集算法你知道哪些,有什么区别?
  • Python selenium库学习使用实操四
  • 用Go开发跨平台GUI
  • 云原生开发 - 工具镜像(简约版)
  • Mac 电脑pink 后端ip地址进行本地联调
  • iPhone使用指南:如何在没有备份的情况下从 iPhone 恢复已删除的照片
  • 黑马程序员 javaWeb基础学习,精细点复习【持续更新】
  • 【C++设计模式】行为型模式:中介者模式
  • 关于C语⾔内存函数 memcpy memmove memset memcmp
  • 华为---Super VLAN简介及示例配置
  • PHP 中浮点数 array_sum 求和精度丢失问题
  • llava1.5论文阅读
  • 【学术会议投稿链接】React前端框架:构建现代Web应用的强大工具
  • Linux: network: tcp: sk_tx_skb_cache;4.18.0-283.el8;多分配内存
  • 电脑报错msvcp100.dll丢失怎么办?这些方法快速修复
  • pymc的安装还是pymc3?
  • 汉语言文学做大数据七年实际工作经验分享普通人快来围观
  • Linux使用Docker部署Paperless-ngx结合内网穿透打造无纸化远程办公
  • PointNet系列论文阅读与理解
  • 反转链表解题思路
  • 【MySQL 保姆级教学】数据库基础(重点)(2)
  • Nginx从入门到实战(八):版本平滑无感知,不停机升级
  • jQuery 用户登录页面非空校验与登录测试
  • 《Linux从小白到高手》综合应用篇:深入理解Linux进程调优
  • Linux安装elasticsearch单机版
  • el-table表头加红色星标
  • 2.1 HTML5 - Canvas标签
  • T-Box联网安全定义