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;
}
相关推荐
卷卷的小趴菜学编程8 天前
算法篇-----滑动窗口
数据结构·算法·双指针·滑动窗口·哈希表·数组相关
满怀101511 天前
【数据通信完全指南】从物理层到协议栈的深度解析
5g·滑动窗口·数据封装·crc校验·qam调制
阳洞洞11 天前
滑动窗口leetcode 209和76
算法·leetcode·双指针·滑动窗口
2401_8582861114 天前
CC52.【C++ Cont】滑动窗口
开发语言·数据结构·c++·算法·leetcode·滑动窗口
阳洞洞14 天前
leetcode 2516. 每种字符至少取 K 个
算法·leetcode·滑动窗口
Y1nhl1 个月前
基础算法:滑动窗口_python版本
开发语言·python·算法·力扣·滑动窗口
漫谈网络1 个月前
智能资源管理机制-重传机制
网络·滑动窗口·sdn·数据通信·重传
_extraordinary_1 个月前
笔试专题(六)
算法·哈希算法·贪心·模拟·滑动窗口·构造
Repeat7151 个月前
日志统计(双指针)
java·数据结构·算法·蓝桥杯·双指针·滑动窗口
破东风1 个月前
leetcode每日一题:替换子串得到平衡字符串
算法·leetcode·滑动窗口