每日一题 — 将 x 减到 0 的最小操作数

思路:

题目要求是让我们从数组的最左端和最右端进行操作,这样的话解题的难度大大提升,我们可以用 正难则反 的思想:

  1. 题目中要求是减去数组中的数刚好等于X,我们可以转换成 数组中某一段的和等于 数组的总长减去X(sum - X)
  2. 然后题目要求求出最小的操作数,也就是最小的长度,转换成求数组中某一段的和等于 数组的总长减去X(target =  sum - X)这个数组的最大长度,然后再用总长减去这个

解法一:还是暴力遍历,过程就不描述了,

然后解法二是在暴力遍历的基础上进行优化,用同向双指针

解法二:滑动窗口(同向双指针)

  • 定义left、right在起始位置,然后固定left,让right向后遍历,把遍历的值加起来
  • 当和大于target的时候,让和减去left所在位置的值,然后left也向后移动
  • 当和等于target的时候,更新最大长度
  • 当一值都没有更新的时候,说明不能恰好减到0,就返回-1,(len初始长度就设置为-1)

代码:

public int minOperations(int[] nums, int x) {
        int sum1 = 0;
        for(int i = 0; i < nums.length; i++){
            sum1 += nums[i];
        }
        int len = -1;
        int target = sum1 - x;
        if(target < 0){
            return -1;
        }
        for(int left = 0,right = 0,sum = 0; right < nums.length; right++){
            //进窗口
            sum += nums[right];
            while(sum > target){
                //出窗口
                sum -= nums[left++];
            }
            //更新结果
            if(sum == target){
                len = Math.max(len,right - left + 1);
            }
        }
        if(len == -1){
            return -1;
        }else{
            return nums.length - len;
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/536547.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue $set()使用复习总结

一维数据&#xff1a; this.$set(数组, 下标, 内容); this.$set(this.typeList, 1, 榴莲); 数组对象&#xff1a; this.$set( target要更改的数据源(可以是对象或者数组), key要更改的具体数据, value重新赋的值 ) 用法一&#xff1a; 循环外&#xff0c;单独使用 用法二 &…

仿真测试平台设计资料:921-6U CPCI卫星接口仿真测试平台

6U CPCI卫星接口仿真测试平台 一、设备概述 卫星接口仿真测试平台基于6U CPCI的结构&#xff0c;包含信号接口前板、后板&#xff0c;计算机主板、机箱、电源等硬件。硬件设计包括&#xff1a;信号接口前板、后板&#xff08;直接遥测遥控、串行RS422、LVDS&#xff0c;模拟量输…

【MySQL】数据库开篇

SueWakeup 个人主页&#xff1a;SueWakeup 系列专栏&#xff1a;学习技术栈 个性签名&#xff1a;保留赤子之心也许是种幸运吧 本文封面由 凯楠&#x1f4f8;友情提供 目录 本系列传送门 1. 什么是数据库&#xff1f; 2. 为什么使用数据库 3. 数据库的分类 4. NoSQL 与关系…

Springboot+vue的粮仓管理系统的设计与实现(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的粮仓管理系统的设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&am…

服务器感染了.rmallox勒索病毒,如何确保数据文件完整恢复?

引言&#xff1a; 随着网络技术的发展&#xff0c;勒索病毒已经成为当今数字时代的一大威胁。近期出现的.rmallox勒索病毒更是引发了广泛关注。本文将深入探讨.rmallox勒索病毒的特点&#xff0c;并提供一系列应对这一威胁的高效策略。如果受感染的数据确实有恢复的价值与必要…

PHP Storm 2024.1使用

本文讲的是phpstorm 2024.1最新版本激活使用教程&#xff0c;本教程适用于windows操作系统。 1.先去idea官网下载phpstorm包&#xff0c;我这里以2023.2最新版本为例 官网地址&#xff1a;https://www.jetbrains.com/zh-cn/phpstorm/ 2.下载下来后安装&#xff0c;点下一步 …

Linux上下载部署zentao v15.5及具体的使用

1.先查询一下Linux的操作系统的位数&#xff0c;确保下载的文件位数与os的一致 [rootlocalhost xiaoming]# uname -m x86_64 [rootlocalhost xiaoming]# getconf LONG_BIT 64 2.下载zentao的Linux压缩包 wget https://www.zentao.net/dl/zentao/15.5/ZenTaoPMS.15.5.zbox…

施耐德EOCR电机保护器产品怎么样,和韩国三和什么关系?

施耐德EOCR电机保护器是一款性能卓越的电动机保护设备&#xff0c;具有多种显著特点和优势。以下是其主要优点&#xff1a; 快速检测和保护&#xff1a;该保护器能迅速检测电机的过载、短路和接地故障&#xff0c;并在短时间内切断电路&#xff0c;避免设备损坏和事故发生。这…

Oracle 21c 数据库迁移到DM8(达梦)数据库

一、环境准备 1、创建脚本 执行dmCreateUser.sql脚本创建GLJ用户&#xff08;注意&#xff1a;需要与需要迁移的oracle用户名一样&#xff09;&#xff0c;如&#xff0c;脚本内容如下&#xff1a; -- 开始将输出重定向到指定的日志文件 spool start /home/dmdba/dmdbms/sql/…

前端三剑客 —— JavaScript (第八节)

目录 内容回顾&#xff1a; 事件对象 事件对象 事件对象的方法和属性 案例-移动DIV 案例-图片轮换 Ajax 内容回顾&#xff1a; 事件对象 1.1 什么是事件驱动 1.2 事件绑定 事件源&#xff1a;发生事件的源对象 事件对象&#xff1a;它包含了事件所有的信息&#xff0c;它…

(2024,FLOPs 动态分配,MoD,MoDE,top-k 路由,块丢弃)在基于 Transformer 的语言模型中动态分配计算

Mixture-of-Depths: Dynamically allocating compute in transformer-based language models 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 注&#xff1a;Transformer 由于其注意力机制&…

mysql查看数据库表容量大小

【推荐】单表行数超过 500 万行或者单表容量超过 2GB&#xff0c;才推荐进行分库分表。 说明&#xff1a;如果预计三年后的数据量根本达不到这个级别&#xff0c;请不要在创建表时就分库分表。 1. 查询所有数据库记录数和容量 SELECTtable_schema AS 数据库,SUM(table_rows) …

Handler——小白能懂的原理,老鸟需要的面经

1.机制学习 1.1Handler定义 发送并处理 与线程的消息队列关联的Message和Runnable 1.2基本用法 1、Message.obtain() 从消息池取得Message 2、Handler().sendMessage(msg) 发送消息 3、Handler().post 将Runnable包装成Message发送 以下提供一个结构代码 import android.os.H…

用于扩展Qt本身的插件(上)

Qt自身插件 引言示例插件与应用插件的程序作为整体插件和应用插件的程序单独存在实现插件编写测试插件的程序应用插件运行结果引言 用于扩展qt自身的插件按照我的理解分为两种: 1. 直接扩展Qt自身,无需在QtCreator的设计器中加载; 2. 扩展Qt自身,同时需要在QtCreator的设计…

sonar搭建(linux系统)

前景 静态代码扫描是CI/CD中重要的一环&#xff0c;可以在代码提交到代码仓库之后&#xff0c;在CI/CD流程中加入代码扫描步骤&#xff0c;从而及时地对代码进行质量的检查。这可以有效地降低后期维护成本&#xff0c;优化产品质量&#xff0c;提高产品交付速度。同时&#xf…

分类预测 | Matlab实现KPCA-ISSA-LSSVM基于核主成分分析和改进麻雀优化算法优化最小二乘支持向量机分类预测

分类预测 | Matlab实现KPCA-ISSA-LSSVM基于核主成分分析和改进麻雀优化算法优化最小二乘支持向量机分类预测 目录 分类预测 | Matlab实现KPCA-ISSA-LSSVM基于核主成分分析和改进麻雀优化算法优化最小二乘支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述…

C语言中的数据结构--链表的应用2(3)

前言 上一节我们学习了链表的应用&#xff0c;那么这一节我们继续加深一下对链表的理解&#xff0c;我们继续通过Leetcode的经典题目来了解一下链表在实际应用中的功能&#xff0c;废话不多说&#xff0c;我们正式进入今天的学习 单链表相关经典算法OJ题4&#xff1a;合并两个…

【分享】各大框架都在使用的Unsafe类

前言 几乎每个使用 Java开发的工具、软件基础设施、高性能开发库都在底层使用了sun.misc.Unsafe&#xff0c;比如Netty、Cassandra、Hadoop、Kafka等。 Unsafe类在提升Java运行效率&#xff0c;增强Java语言底层操作能力方面起了很大的作用。但Unsafe类在sun.misc包下&#x…

大型语言模型有什么用?

大型语言模型有什么用&#xff1f; 大型语言模型识别、总结、翻译、预测、生成文本和其他内容。 AI 应用程序正在总结文章、撰写故事和进行长时间对话——而大型语言模型正在承担繁重的工作。 大型语言模型或 LLM 是一种深度学习算法&#xff0c;可以根据从海量数据集中获得…

linux进阶篇:下载工具wget的安装以及应用

1 wget工具介绍 wget是一个下载文件的工具&#xff0c;它用在命令行下。对于Linux用户是必不可少的工具&#xff0c;我们经常要下载一些软件或从远程服务器恢复备份到本地服务器。 wget支持HTTP&#xff0c;HTTPS和FTP协议&#xff0c;可以使用HTTP代理。所谓的自动下载是指&a…