leetcode每日一题 -- 3355. 零数组变换 I

最开始,我直接模拟题目操作,但超时了

于是想到了直接记录[可以操作区间]下标的方式,定义一个等大的数组,只在对应[左右区间下标]位置上+1,这样最终只需要遍历一次数组,即可得到最终数组,然后和原整数数组比对,<则无法变换为0

但写着写着感觉有点无从下手,于是看了题解

思路

差分数组

其实思路和我的一样,但处理方式更好,因为它对于右边界是-1

代码

cpp 复制代码
class Solution {
public:
    bool isZeroArray(vector<int>& nums, vector<vector<int>>& queries) {
        // 差分数组,多出来的一个元素用于处理边界
        vector<int> deltaArray(nums.size() + 1, 0);
        for (int k = 0; k < queries.size(); ++k) {
            int i = queries[k][0], j = queries[k][1];
            ++deltaArray[i];
            --deltaArray[j + 1];
        }
        // 计算前缀和
        vector<int> arr;
        int sum = 0;
        for (auto delta : deltaArray) {
            sum += delta;
            arr.push_back(sum);
        }
        for (int i = 0; i < nums.size(); ++i) {
            if (arr[i] < nums[i]) {
                return false;
            }
        }
        return true;
    }
};
相关推荐
骑自行车的码农9 分钟前
React SSR 技术实现原理
算法·react.js
盘古开天16669 分钟前
深度强化学习算法详解:从理论到实践
算法
Mr.H01271 小时前
快速排序的常见构思
数据结构·算法
mit6.8241 小时前
背包dp|格雷码
算法
rit84324991 小时前
基于MATLAB的PCA+SVM人脸识别系统实现
人工智能·算法
RTC老炮1 小时前
webrtc降噪-NoiseEstimator类源码分析与算法原理
算法·webrtc
不当菜鸡的程序媛2 小时前
Flow Matching|什么是“预测速度场 vt=ε−x”?
人工智能·算法·机器学习
sali-tec3 小时前
C# 基于halcon的视觉工作流-章58-输出点云图
开发语言·人工智能·算法·计算机视觉·c#
_OP_CHEN3 小时前
算法基础篇:(四)基础算法之前缀和
c++·算法·前缀和·蓝桥杯·acm·icpc·算法竞赛
_OP_CHEN3 小时前
算法基础篇:(五)基础算法之差分——以“空间”换“时间”
c++·算法·acm·icpc·算法竞赛·差分算法·差分与前缀和