Leetcode 3355 Zero Array Transformation

题意:给定一个长度为 n的int数组以及一个2D array, 有一个query数组,每个数组里的数[Li, Ri]代表这个区间的子集区间的数都减1,求这个数组在经过这个query数组之后能否变成全部为0的数组

https://leetcode.com/problems/zero-array-transformation-i/description/

题解:用差分数组可以解决,计算经过这么多个query之后如果数组中所有的值都小于等于0,返回true

差分数组:长度和原数组保持一定

example: [8, 2, 3, 5]

查分: [8, -6, 1, 2]

如何还原:[8, 8+(-6), 8+(-6)+1, 8+(-6)+1 + 2]

差分数组求前缀和就是原答案,注意nums[0]特殊对待

cpp 复制代码
class Solution {
public:
    bool isZeroArray(vector<int>& nums, vector<vector<int>>& queries) {
        int n = nums.size();
        vector<int> sub(n, 0);
        vector<int> arr(n, 0);
        for(int i = 0; i < n; i++) {
            if(!i) {
                sub[i] = nums[0];
            } else {
                sub[i] = nums[i] - nums[i-1];
            }
        }
        
        
        for(auto query: queries) {
            sub[query[0]] -= 1;
            if(query[1]+1 < n) {
                sub[query[1] + 1] += 1;
            }
        }
        for(int i = 0; i < n; i++) {
            if(!i) {
                arr[i] = sub[0];
            } else {
                arr[i] = arr[i-1] + sub[i];
            }
            if ( arr[i] > 0 ) {
                return false;
            }
        }
        return true;
    }
};
相关推荐
wearegogog12332 分钟前
光谱分析波段选择的连续投影算法
算法
执笔论英雄36 分钟前
【RL】DAPO 数据处理
算法
why1511 小时前
面经整理——算法
java·数据结构·算法
悦悦子a啊2 小时前
将学生管理系统改造为C/S模式 - 开发过程报告
java·开发语言·算法
痕忆丶2 小时前
双线性插值缩放算法详解
算法
_codemonster3 小时前
深度学习实战(基于pytroch)系列(四十八)AdaGrad优化算法
人工智能·深度学习·算法
鹿角片ljp3 小时前
力扣140.快慢指针法求解链表倒数第K个节点
算法·leetcode·链表
自由生长20244 小时前
位运算第1篇-异或运算-快速找出重复数字
算法
xxxxxmy4 小时前
同向双指针(滑动窗口)
python·算法·滑动窗口·同向双指针
释怀°Believe4 小时前
Daily算法刷题【面试经典150题-5️⃣图】
算法·面试·深度优先