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;
}
相关推荐
GGBondlctrl9 天前
【JavaEE初阶】网络原理—关于TCP协议值滑动窗口与流量控制,进来看看吧!!!
网络·网络协议·tcp/ip·滑动窗口·流量控制·拥塞控制·tcp协议特性
搞笑症患者18 天前
LeetCode Hot100 - 滑动窗口篇
算法·leetcode·滑动窗口
freephp19 天前
细聊滑动窗口
滑动窗口
Trouvaille ~20 天前
【优选算法篇】踏入算法的深邃乐章:滑动窗口的极致探秘
开发语言·数据结构·c++·算法·面试·滑动窗口·哈希表
中间件XL21 天前
sentinel原理源码分析系列(六)-统计指标
sentinel·滑动窗口·指标统计
UestcXiye21 天前
Leetcode 第 359 场周赛题解
c++·leetcode·动态规划·滑动窗口·数据结构与算法
ZachOn1y23 天前
计算机网络:数据链路层 —— 可靠传输服务
网络·计算机网络·滑动窗口·数据链路层·可靠传输·超时重传
Espresso Macchiato25 天前
Leetcode 3321. Find X-Sum of All K-Long Subarrays II
leetcode·滑动窗口·leetcode hard·leetcode 3321·leetcode周赛419
初晴~1 个月前
【网络原理】TCP协议提高效率的秘密-滑动窗口机制
服务器·网络·c++·python·网络协议·tcp/ip·滑动窗口
夏叶叶叶叶1 个月前
LeetCode 2831.找出最长等值子数组(cpp, python3)
c++·python·算法·leetcode·滑动窗口