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;
    }
};
相关推荐
_周游3 分钟前
【数据结构】_二叉树部分特征统计
数据结构·算法
零点BUG16 分钟前
推荐系统召回机制全景指南:从经典算法到工业级实践
算法
双叶83631 分钟前
(C++)素数的判断(C++教学)(C语言)
c语言·开发语言·数据结构·c++·算法
Alfred king1 小时前
面试150 除自身以外数组的乘积
leetcode·面试·职场和发展
风靡晚2 小时前
汽车毫米波雷达增强感知:基于相干扩展和高级 IAA 的超分辨率距离和角度估计.
算法·汽车·信息与通信·信号处理·fmcw
岁忧2 小时前
(LeetCode 每日一题) 2294. 划分数组使最大差为 K (贪心、数组)
java·c++·leetcode·职场和发展·go
用户94996677484033 小时前
计算机视觉101:从算法到部署
算法
Musennn3 小时前
leetcode51.N皇后:回溯算法与冲突检测的核心逻辑
java·数据结构·算法·leetcode
zfj3213 小时前
算法-动态规划-钢条切割问题
算法·动态规划
巴基海贼王4 小时前
针对数据仓库方向的大数据算法工程师面试经验总结
大数据·数据仓库·算法