力扣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 分钟前
【LeetCode热题100(84/100)】乘积最大子数组
算法·leetcode·职场和发展
Yupureki7 分钟前
《算法竞赛从入门到国奖》算法基础:入门篇-递归初阶
c语言·开发语言·数据结构·c++·算法·visual studio
2501_901147838 分钟前
多头注意力机制(Multi-Head Attention)知识笔记(附面试核心考点)
笔记·面试·职场和发展
a3535413829 分钟前
牛顿迭代法中的雅克比矩阵几何意义
线性代数·算法
Coder个人博客12 分钟前
Linux6.19-ARM64 crypto NH-Poly1305 NEON子模块深入分析
linux·网络·算法·车载系统·系统架构·系统安全·鸿蒙系统
自然语16 分钟前
三维场景管理类位姿抖动优化计划
人工智能·数码相机·算法
源代码•宸22 分钟前
Leetcode—3314. 构造最小位运算数组 I【简单】
开发语言·后端·算法·leetcode·面试·golang·位运算
夏鹏今天学习了吗22 分钟前
【LeetCode热题100(88/100)】最长回文子串
算法·leetcode·职场和发展
轻微的风格艾丝凡24 分钟前
圆周率(π)2-10进制转换及随机性量化分析技术文档
人工智能·算法
夏鹏今天学习了吗26 分钟前
【LeetCode热题100(87/100)】不同路径
算法·leetcode·职场和发展