leetcode1658. 将 x 减到 0 的最小操作数

题目链接:1658. 将 x 减到 0 的最小操作数 - 力扣(LeetCode)

知道滑动窗口,代码却写不出来

objectivec 复制代码
#define MIN(a ,b) ((a) < (b) ? (a) : (b))

int minOperations(int* nums, int numsSize, int x)
{
    int ans = INT_MAX;
    int sum = 0;
    for (int i = 0; i < numsSize; i++) {
        sum += nums[i];
    }
    if (sum < x) {
        return -1;
    }
    int left = -1;
    int right = 0;
    int lsum = 0; // left为-1,左边数组为空,前缀和为0
    int rsum = sum; // right为0,右边选中整个数组,后缀和为数组和sum
    while (left < numsSize) {
        if (left != -1) {
            lsum += nums[left]; // 更新前缀和
        }
        while (right < numsSize && lsum + rsum > x) {
            rsum -= nums[right++]; // 前缀和后缀和相加大于x,缩小右数组
        }
        if (lsum + rsum == x) {
            ans = MIN(ans, left + 1 + numsSize - right); // 更新最小操作数
        }
        left++;
    }
    return ans == INT_MAX ? -1 : ans;
}
相关推荐
a187927218311 天前
【算法】双指针与滑动窗口(三):相向双指针——比较、排除、收缩
算法·leetcode·双指针·滑动窗口·原理·相向双指针·算法讲解
a187927218313 天前
【算法】双指针与滑动窗口(二):滑动窗口——吃进、判定、吐出
算法·leetcode·双指针·滑动窗口·原理·模板·算法讲解
Evand J3 天前
【MATLAB例程,图像滤波降噪12】加权中值滑动窗口滤波(WMF)图像降噪,包含滤波质量评价。附代码下载链接
开发语言·图像处理·人工智能·计算机视觉·matlab·滑动窗口·滤波
Evand J3 天前
【MATLAB例程,图像降噪7】高斯加权滑动窗口滤波,用于图像降噪,带质量评价,附代码下载链接
开发语言·图像处理·matlab·滑动窗口·滤波·降噪·图像滤波
Evand J6 天前
【MATLAB例程,图像降噪滤波9】自适应维纳滑动窗口滤波(Wiener)图像降噪、方法对比,有中文注释
开发语言·图像处理·计算机视觉·matlab·滑动窗口·滤波·降噪
a187927218316 天前
【算法】双指针与滑动窗口(一):框架总纲——三类问题、一个原理与判决书
算法·leetcode·区间·双指针·滑动窗口·原理·算法讲解
-dzk-1 个月前
【滑动窗口】LC 3.无重复字符的最长子串
算法·滑动窗口
Tisfy1 个月前
LeetCode 3090.每个字符最多出现两次的最长子字符串:二重循环 / 滑动窗口
算法·leetcode·字符串·题解·模拟·双指针·滑动窗口
旖旎夜光1 个月前
LeetCode 30:串联所有单词的子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
旖旎夜光1 个月前
LeetCode 1658:将 x 减到 0 的最小操作数(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口