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;
}
相关推荐
bohu832 天前
sentinel学习笔记1-为什么需要服务降级
笔记·学习·sentinel·滑动窗口
幼儿园口算大王5 天前
关于滑动窗口算法--最小替换字串长度
java·数据结构·算法·滑动窗口
DogDaoDao6 天前
leetcode 面试经典 150 题:长度最小的子数组
算法·leetcode·面试·双指针·滑动窗口·数据结构与算法·子数组
GGBondlctrl10 天前
【Leetcode】滑动窗口算法-编程苍穹下划破数据暗夜的高效光弧
数据结构·算法·leetcode·滑动窗口·长度最小子数组·无重复字符长子串
呼啦啦啦啦啦啦啦啦1 个月前
刷题日常(移动零,盛最多水的容器,三数之和,无重复字符的最长子串)
算法·双指针·滑动窗口
做人不要太理性1 个月前
【算法一周目】滑动窗口(2)
c++·算法·leetcode·哈希算法·散列表·滑动窗口
一直学习永不止步1 个月前
LeetCode题练习与总结:至少有 K 个重复字符的最长子串--395
java·算法·leetcode·字符串·滑动窗口·哈希表·分治
Tisfy1 个月前
LeetCode 3255.长度为 K 的子数组的能量值 II:和官解思路不同的O(n)做法(附思考过程)
数据结构·算法·leetcode·题解·遍历·滑动窗口
GGBondlctrl2 个月前
【JavaEE初阶】网络原理—关于TCP协议值滑动窗口与流量控制,进来看看吧!!!
网络·网络协议·tcp/ip·滑动窗口·流量控制·拥塞控制·tcp协议特性
搞笑症患者2 个月前
LeetCode Hot100 - 滑动窗口篇
算法·leetcode·滑动窗口