力扣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;
    }
};
相关推荐
高频交易dragon14 小时前
An Impulse Control Approach to Market Making in a Hawkes LOB Market从论文到生产
人工智能·算法·机器学习
GSDjisidi14 小时前
正社員・個人事業主歓迎|GSD東京本社で働こう|業界トップクラスの福利厚生完備
开发语言·面试·职场和发展
java修仙传14 小时前
力扣hot100:划分字母区间
算法·leetcode·职场和发展
Frank_refuel14 小时前
C++STL之set和map的接口使用介绍
数据库·c++·算法
java修仙传14 小时前
力扣hot100:跳跃游戏||
算法·leetcode·游戏
闻缺陷则喜何志丹14 小时前
【模拟】P9670 [ICPC 2022 Jinan R] Frozen Scoreboard|普及+
c++·算法·模拟·洛谷
永远都不秃头的程序员(互关)14 小时前
【K-Means深度探索(十一)】K-Means VS 其他聚类算法:如何选择最合适的工具?
算法·kmeans·聚类
洛生&14 小时前
Nested Ranges Count
算法
老鼠只爱大米14 小时前
LeetCode经典算法面试题 #142:环形链表 II(哈希表、快慢指针等多种方法详细解析)
算法·leetcode·链表·快慢指针·floyd算法·环形链表
数智工坊14 小时前
【操作系统-线程介绍】
linux·算法·ubuntu