当前位置: 首页 > article >正文

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

题目

链接:leetcode链接
在这里插入图片描述

思路分析(滑动窗口)

题目要求从最左边或者最右边移除元素,需要思考两侧,这是比较麻烦的。
正难则反,我们逆向思维一下,最后剩余的元素是不是中间的连续区间,所以,这个题目可以转化成寻找一个最长连续子数组,使得子数组的和为原数组的和减去x。

很明显,使用滑动窗口可以很快速的解决这道题。

但是这道题目还是有一些细节需要考虑的:
1、可能原数组的和 <= x,这是要进行特殊判断的
2、确定好如何进窗口,判断,出窗口,更新结果。
3、最后的返回值,要用size - len,别直接返回len

代码

int minOperations(vector<int>& nums, int x) {
        int sum = 0;
        for(auto e:nums) sum += e;
        int target = sum - x;
        if(target < 0) return -1;//可能总和小于x
        if(target == 0) return nums.size();

        int len = 0,s = 0;
        for(int left = 0,right = 0;right < nums.size();++right)
        { 
            s += nums[right];//进窗口
            while(s > target)//出窗口
            {
                s -= nums[left];
                ++left;
            }

            if(s == target)
                len = max(right - left + 1,len);
            
        }

        return len == 0?-1:nums.size() - len;
        
    }

http://www.kler.cn/a/301146.html

相关文章:

  • type 属性的用途和实现方式(图标,表单,数据可视化,自定义组件)
  • vue3+ts+element-plus 对话框el-dialog设置圆角
  • lerna使用指南
  • Git学习记录
  • WINFORM - DevExpress -> gridcontrol拖拽行记录排序
  • 对比学习 (Contrastive Learning) 算法详解与PyTorch实现
  • 宠物空气净化器哪个好?希喂、352、有哈宠物空气净化器测评分享
  • 什么是死锁?怎么预防?如何解决?
  • 如何在群晖NAS中安装HA平台并实现异地控制智能家居设备实战教程
  • 90、k8s之secret+configMap
  • async和await真题
  • h5页面使用antd-modal,怎么处理居中且自然
  • Flutter-底部选择弹窗(showModalBottomSheet)
  • Ubuntu系统使用Docker部署Jupyter Notebook并实现笔记云同步
  • Java 面试题:Java的垃圾收集算法 --xunznux
  • 算法岗/开发岗 实况
  • 不允许有程序员不知道这款AI代码扩写工具
  • 学会分析问题,画出分析图,解释问题过程,找出规律 ;整数数组分为左右2个部分,左边位奇数右边偶数
  • B端产品经理的流程设计思维
  • Selenium面试题(二)
  • 从自动化到智能化的研究
  • Vue邮件发送:如何有效集成邮件发送功能?
  • day20JS-axios数据通信
  • Java面试题·解释题·框架部分
  • FastGPT自定义插件的icon
  • Ubuntu系统Docker部署数据库管理工具DbGate并实现远程查询数据