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;
    }
};
相关推荐
Tisfy7 分钟前
LeetCode 3606.优惠券校验器:分类 + 排序
leetcode·题解·排序
Zsy_0510038 分钟前
【数据结构】排序
数据结构·算法·排序算法
青山的青衫8 分钟前
【二分查找-开区间思维】
算法
Swift社区17 分钟前
LeetCode 449 - 序列化和反序列化二叉搜索树
算法·leetcode·职场和发展
CoderYanger33 分钟前
贪心算法:3.最大数
java·算法·leetcode·贪心算法·1024程序员节
lxmyzzs33 分钟前
【图像算法 - 37】人机交互应用:基于 YOLOv12 与 OpenCV 的高精度人脸情绪检测系统实现
算法·yolo·人机交互·情绪识别
muyouking1134 分钟前
Zig 语言实战:实现高性能快速排序算法
算法·排序算法
CoderYanger39 分钟前
贪心算法:5.最长递增子序列
java·算法·leetcode·贪心算法·1024程序员节
慕容青峰42 分钟前
【牛客周赛 107】E 题【小苯的刷怪笼】题解
c++·算法·sublime text
算法熔炉1 小时前
深度学习面试八股文(2)——训练
人工智能·深度学习·算法