首页 > 其他分享 >3229. 使数组等于目标数组所需的最少操作次数

3229. 使数组等于目标数组所需的最少操作次数

时间:2024-08-09 14:27:58浏览次数:9  
标签:3229 target nums 题解 long 最少 差分 数组

原题链接

题解

原题解区写的很详细,所以这里总结一下自己的语言

性质1.如果两个数组相等,那么两个数组的差分数组也相等

根据这个性质,原题就转换成了对数组 \(a\) 的差分数组操作(选取两个点 \(i,j\) 使 \(d[i]+1,d[j]-1\) 或者 \(d[i]-1,d[j]+1\))

性质2:差分数组上,有多少加,就有多少减(如果不对数组末尾操作)

所以我们只需要加或者减的次数更大的那个

code

class Solution {
public:
    long long minimumOperations(vector<int>& nums, vector<int>& target) {
        long long n=nums.size();
        
        long long ans1=0,ans2=0;
        ans1+=max(0,target[0]-nums[0]);
        ans2+=max(0,nums[0]-target[0]);
        for(int i=1;i<n;i++)
        {
            ans1+=max(0,target[i]-target[i-1]-(nums[i]-nums[i-1]));
            ans2+=max(0,-(target[i]-target[i-1]-(nums[i]-nums[i-1])));
        }
        return max(ans1,ans2);
    }
};

标签:3229,target,nums,题解,long,最少,差分,数组
From: https://www.cnblogs.com/pure4knowledge/p/18350688

相关文章

  • 25版王道数据结构课后习题详细分析 第三章栈、队列和数组 3.1 栈 选择题部分
    一、单项选择题————————————————————————————————————————解析:栈和队列的逻辑结构都是相同的,都属于线性结构,只是它们对数据的运算不同。正确答案:B————————————————————————————————————......
  • 专题(七)数组
    一、用法写法说明echo${array[*]}返回数组中的每个项,用空格隔开echo${array[@]}返回数组中的每个项,用空格隔开(字符串)按照分隔符分割字符串,默认分隔符为空格1、array_name=(ele1 ele2 ele3...elen)2、array_name=()3、array_name=(123)  ......
  • 数组,字符串反转
    this.message='HelloVue.js!'this.message.split('').reverse().join('')执行后:分析:1.split('')把一个字符串分割成字符串数组如何理解?==》就是:例如字符串是“Hello”,使用split('')之后,就变成['H','e','l','......
  • 添加两个带有偏移量的 numpy 数组
    假设我有两个数组:a=numpy.array([1,2,3,4,5])b=numpy.array([10,11,12])我希望将这些数组添加在一起,但我希望从第一个数组中的索引3开始,以生成:numpy.array([1,2,3,14,16,12]).所以我基本上是在a[3中添加一个额外的0:]使其与b的长度相同,然后将其与b相......
  • 编写一个函数接受这些参数:内含int类型元素的数组名,数组的大小和一个代表选取次数的值
    /编写一个函数接受这些参数:内含int类型元素的数组名,数组的大小和一个代表选取次数的值。该函数从数组中随机指定数量的元素,并打印他们。每个元素只能选择一次(模拟抽奖数字或挑选陪审团成员)。另外,如果你的实现有time()或类似的函数,可以在srand()中使用这个函数的输出来初始化......
  • Python和AI库NumPy(二):数组创建与操作的深入探索
    目录1.数组创建1.1基本数组创建1.2使用内置函数创建数组1.3特殊数组的创建2.数组的基本操作2.1数组属性2.2数组索引和切片2.3数组的形状操作2.4数组拼接与分割3.数组的数学操作3.1基本算术操作3.2广播机制3.3线性代数运算4.高级数组操作4.1花式......
  • C语言数组练习
    数组作业一维数组练习题题目1键盘录入一组数列,利用冒泡排序将数据由大到小排序#include<stdio.h>intmain(){ intt[100],num,tmp; printf("请输入数字个数:"); scanf("%d",&num); printf("请输入%d个数字:\n",num); for(inti=0;i<num;i++){ sc......
  • C++ 根据层序遍历数组 构造二叉树
    说明该层序遍历数组中空节点会使用-1代替,即该层序遍历数组可以理解为一个完全二叉树代码利用队列实现左右子节点的存储,每次通过获取队列头部元素即为当前头节点,然后在数组中i和i+1对应该头结点下的左右子节点,如果不为-1,那么说明可以入队。structTreeNode{intval;Tree......
  • C数组和指针,从此不再困惑。
    目录一、思考下图中的问题?二、上图中问题答案,如下图:三、分析问题答案1、分析前知识准备1.0、内存区术语1.1、为什么定义数组类型变量时要指定大小或初始化1.2、指针指向的内存一定是在堆区吗?1.3、const关键字的思考1.4、进程虚拟地址空间1.5、为什么会段错误?2、开始......
  • 在python中将二维数组转换为彩色图像
    我有像这样的2d整数列表:list1=[[1,30,50],[21,45,9],[97,321,100]]下一步我要将其转换为numpy数组:myarr=np.asarray(list1)下一步我将使用PIL将其转换为图像,如下所示:img=Image.fromarray(myarr,"I")img.save("my.png")问题是我不想要灰......