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;
}
相关推荐
f狐0狸x5 天前
【蓝桥杯每日一题】3.28
c语言·数据结构·c++·蓝桥杯·滑动窗口
ゞ 正在缓冲99%…8 天前
leetcode3.无重复字符的最长字串
算法·leetcode·滑动窗口
小卡皮巴拉15 天前
【力扣刷题实战】无重复的最长字串
开发语言·c++·算法·leetcode·滑动窗口
daily_233316 天前
coding ability 展开第四幕(滑动指针——巩固篇)超详细!!!!
c++·算法·字符串·哈希算法·滑动窗口
daily_233320 天前
coding ability 展开第三幕(滑动指针——基础篇)超详细!!!!
android·开发语言·数据结构·c++·算法·滑动窗口
闻缺陷则喜何志丹1 个月前
【二分查找、滑动窗口】P10389 [蓝桥杯 2024 省 A] 成绩统计|普及+
c++·算法·蓝桥杯·二分查找·滑动窗口·洛谷·成绩
WenGyyyL1 个月前
蓝桥杯真题——近似gcd(很离谱!!!)
算法·leetcode·蓝桥杯·滑动窗口
源代码•宸2 个月前
Leetcode—487. 最大连续1的个数 II【中等】Plus
c++·经验分享·算法·leetcode·滑动窗口
神秘的t2 个月前
优选算法合集————双指针(专题二)
java·数据结构·算法·滑动窗口
L_M_TY2 个月前
G1. Yunli‘s Subarray Queries (easy version)
算法·stl·滑动窗口·离线查询