力扣1658.将x减到0的最小操作数

力扣1658.将x减到0的最小操作数

题目

题目解析及思路

题目要求每次操作删除最左或最右的元素 ,并从x中减去,返回当x = 0 时的最小操作数

  • 正难则反:求值为sum - x的区间

代码

cpp 复制代码
class Solution {
public:
    int minOperations(vector<int>& nums, int x) {
        int res=1e5+10,n = nums.size();
        int sum = accumulate(nums.begin(),nums.end(),0);
        int ans = 0;
        int k = sum - x;
        if(k <0) return -1;
        for(int i=0,j=0;i<n;i++)
        {
            ans += nums[i];
            while(ans > k) ans -= nums[j++];
            if(ans == k) res = min(res,n- (i-j+1));
        }
        if(res == 1e5 + 10) res = -1;
        return res;
    }
};
相关推荐
1白天的黑夜114 分钟前
动态规划-62.不同路径-力扣(LeetCode)
c++·算法·leetcode·动态规划
少了一只鹅25 分钟前
深入理解指针(3)
c语言·数据结构·算法
仙人掌_lz28 分钟前
从零开始理解FlashAttention:算法细节图解
人工智能·python·深度学习·算法·ai·flashattention
有一个好名字1 小时前
力扣:轮转数组
数据结构·算法·leetcode
北海有初拥1 小时前
【day04】Fibonacci数列 | 单词搜索 | 杨辉三角
算法
David Bates1 小时前
代码随想录第40天:图论1
python·算法·图论
赵和范2 小时前
C++:求分数序列和
开发语言·c++·算法
bbblys2 小时前
B4172 学习计划 题解
算法·动态规划
菜鸟破茧计划2 小时前
线段树:数据结构中的超级英雄
数据结构·c++·算法
秦少游在淮海2 小时前
leetcode - 双指针问题
算法·leetcode