​LeetCode解法汇总2216. 美化数组的最少删除数

news2024/7/2 3:32:23

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台


描述:

给你一个下标从 0 开始的整数数组 nums ,如果满足下述条件,则认为数组 nums 是一个 美丽数组 :

  • nums.length 为偶数
  • 对所有满足 i % 2 == 0 的下标 i ,nums[i] != nums[i + 1] 均成立

注意,空数组同样认为是美丽数组。

你可以从 nums 中删除任意数量的元素。当你删除一个元素时,被删除元素右侧的所有元素将会向左移动一个单位以填补空缺,而左侧的元素将会保持 不变 。

返回使 nums 变为美丽数组所需删除的 最少 元素数目

示例 1:

输入:nums = [1,1,2,3,5]
输出:1
解释:可以删除 nums[0]nums[1] ,这样得到的 nums = [1,2,3,5] 是一个美丽数组。可以证明,要想使 nums 变为美丽数组,至少需要删除 1 个元素。

示例 2:

输入:nums = [1,1,2,2,3,3]
输出:2
解释:可以删除 nums[0]nums[5] ,这样得到的 nums = [1,2,2,3] 是一个美丽数组。可以证明,要想使 nums 变为美丽数组,至少需要删除 2 个元素。

提示:

  • 1 <= nums.length <= 105
  • 0 <= nums[i] <= 105

解题思路:

nums的长度是10^5级别,所以这题的时间复杂度为O(n)到O(n*logn)。

其实我们可以从头遍历数组,并且记录当前状态。

index代表遍历到的位置,postion代表删除后遍历到的位置,lastValue则代表上一个删除后的偶数位的值,deleteNum则代表删除的数量。如果position为偶数位则记录值并且修改index和position的位置。如果position为奇数位,则判断是否等于lastValue并修改index和deleteNum。

代码:

class Solution {
public:
    int minDeletion(vector<int> &nums)
    {
        int deleteNum = 0;
        int index = 0;
        int position = 0;
        int lastValue = -1;
        while (index < nums.size())
        {
            if (position % 2 == 0)
            {
                lastValue = nums[index];
                index++;
                position++;
                continue;
            }

            if (lastValue == nums[index])
            {
                index++;
                deleteNum++;
                continue;
            }
            index++;
            position++;
        }
        if (position % 2 != 0)
        {
            deleteNum++;
        }
        return deleteNum;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

外贸ERP系统是什么?推荐的外贸管理软件?

外贸ERP管理系统有哪些&#xff1f;海洋建站管理软件的功能&#xff1f; 为了更有效地处理外贸业务&#xff0c;许多企业正在寻找先进的工具和技术。为了提高效率、降低成本并增强竞争力&#xff0c;越来越多的外贸企业正在转向外贸ERP系统。那么&#xff0c;外贸ERP系统究竟是…

深度学习之基于Django+Tensorflow动物识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Django和TensorFlow的动物识别系统可以被设计成能够使用深度学习算法自动识别上传的图像中的动物种类&#xff…

CrystalDiskInfo/CrystalDiskMark/DiskGenius系统迁移

CrystalDiskInfo 主要用于看硬盘的各种信息&#xff0c;包括但不限于硬盘通电时间、通电次数、硬盘好坏状态 CrystalDiskMark 主要用于测试硬盘的读写速度、连续读写速度 DiskGenius 主要用于通过U盘装操作系统后进行&#xff0c;磁盘分区&#xff0c;更改磁盘名、隐藏部分…

女儿冬天的第一件羽绒服,这也太好看了

分享女儿的时尚穿搭 撞色插肩款羽绒服 同色系的精彩碰撞 描绘出绚烂的色彩 走在街上就是最靓的崽 显肤色显瘦超吸睛 妥投时尚小潮人一枚

Google App Campaigns的逻辑及其建议

Google App Campaigns&#xff08;Google应用推广&#xff09;是一种广告服务&#xff0c;旨在帮助应用开发者在Google平台上推广其应用程序。本文小编将讲讲Google App Campaigns的逻辑&#xff0c;并提供一些建议&#xff0c;以帮助应用开发者最大程度地利用这项服务。 1、Go…

gzip 压缩优化大 XML 响应的处理方法

当处理大型XML响应时&#xff0c;我们经常会面临内存限制和性能问题。 在处理这个问题时&#xff0c;我们可以使用Python的requests库和lxml库来解决。下面是解决方案的步骤&#xff1a; 1. 使用requests库发送HTTP请求获取XML响应。 2. 检查响应的Content-Encoding标头&…

高效开发与设计:提效Spring应用的运行效率和生产力 | 京东云技术团队

引言 现状和背景 Spring框架是广泛使用的Java开发框架之一&#xff0c;它提供了强大的功能和灵活性&#xff0c;但在大型应用中&#xff0c;由于Spring框架的复杂性和依赖关系&#xff0c;应用的启动时间和性能可能会受到影响。这可能导致开发过程中的迟缓和开发效率低下。优…

性能小课堂:Jmeter录制手机app脚本!

环境准备&#xff1a;1.手机2.wifi3.Jmeter 具体步骤&#xff1a; 1、启动Jmeter&#xff1b; 2、“测试计划”中添加“线程组”&#xff1b; 3、“工作台”中添加“HTTP代理服务器”&#xff1b; 4、配置代理服务器&#xff1a;Global Settings下面的端口配置&#xff1a…

免费AI画图工具大比拼:6款细节惊艳的推荐

1、即时灵感 即时灵感是一种专业的人工智能绘制肖像工具&#xff0c;由国内团队开发&#xff0c;对国内用户和新手用户非常友好&#xff0c;输入中文描述关键词可以在20秒内获得4张超级精致、超细节、超真实、超自然的肖像图片&#xff0c;风格多变&#xff0c;有丰富的模型供…

MySQL之JDBC编程

目录 1. 数据库编程的必备条件 2. Java的数据库编程&#xff1a;JDBC 3. JDBC工作原理 4. JDBC使用 4.1 IDEA配置JDBC 4.2 JDBC开发案例 4.3 JDBC使用步骤总结 5. JDBC常用接口和类 5.1 JDBC API 5.2 数据库连接Connection 5.3 Statement对象 5.4 ResultS…

去除尾部和头部空格及换行符

在使用Python的Requests库发送HTTP请求时&#xff0c;我们经常需要自定义请求头&#xff0c;以便与服务器进行通信。 在使用Requests库发送HTTP请求时&#xff0c;我们通常会定义请求头&#xff0c;以传递关键信息给服务器。然而&#xff0c;在构建请求头时&#xff0c;可能会…

【EI会议征稿】第五届电子商务与互联网技术国际学术会议(ECIT 2024)

2023 4th International Conference on E-Commerce and Internet Technology 第五届电子商务与互联网技术国际学术会议(ECIT 2024) 电子商务是以信息网络技术为手段&#xff0c;以商品交换为中心的商业活动。在互联网开放的网络环境下&#xff0c;基于客户端/服务端应用方式&…

动态时钟实现

前端HTMLCSS3JavaScript实现动态时钟 一、实现思路概述二、源代码(包含HTML、CSS、JS)三、图片资源与效果截图1. 图片资源2. 效果截图 一、实现思路概述 1. 通过HTML搭建基本时钟的页面结构(这里将时钟图片资源作为背景图&#xff09;2. 将时钟背景和时/分/秒图片进行CSS位置居…

Sui生态多家协议上线流动质押,兼顾收益与灵活性

在Sui上&#xff0c;流动质押协议允许DeFi用户质押SUI&#xff0c;并获得可交易或用于其他DeFi活动的流动质押标记token。这一过程绕过了传统质押中验证节点锁定token的问题。用户可以通过Sui的权益证明机制&#xff08;PoS&#xff09;确保网络的安全&#xff0c;同时参与生态…

艺术作品3D虚拟云展厅能让客户远程身临其境地欣赏美

艺术品由于货物昂贵、易碎且保存难度大&#xff0c;因此在艺术品售卖中极易受时空限制&#xff0c;艺术品三维云展平台在线制作是基于web端将艺术品的图文、模型及视频等资料进行上传搭配&#xff0c;构建一个线上艺术品3D虚拟展厅&#xff0c;为艺术家和观众提供了全新的展示和…

【MySQL】一些内置函数(时间函数、字符串函数、数学函数等,学会了有妙用)

内置函数 前言正式开始时间函数显示当前日期、时间、日期时间的日期计算相差多少天示例创建一张表&#xff0c;记录生日 留言表 字符串函数charsetconcatinstr(string, substring)ucase和lcaseleft(string, length)length求字符串长度replace(str, search_str, replace_str)tri…

2024年测试程序员必看系列之自动化测试框架

自动化测试框架概念 自动化测试框架是一个集成体系&#xff0c;这个体系中包含测试功能的函数库、测试数据源、测试对象以及可重用的模块。 框架&#xff08;framework&#xff09;是一个框子——指其约束性&#xff0c;也是一个架子——指其支撑性。是一个基本概念上的结构&…

如何优雅的避免空指针异常

文章目录 1.数据准备2.实战&#xff1a;获取用户所在的城市2.1.直接获取&#xff1b;容易出现空指针异常。2.2.使用if-else判断&#xff1b;避免了出现空指针的问题&#xff0c;但是代码结构层次嵌套多&#xff0c;不美观2.3.使用工具类美化一下if判断代码2.4.使用Optional解决…

如何用CHAT理解数理化?

问CHAT&#xff1a;扇形面积的概念&#xff0c;简单阐述一下。 CHAT回复&#xff1a; 扇形面积是指扇形这种二维几何图形所覆盖的区域大小。 扇形是一个圆的一部分&#xff0c;是由圆心出发的两条射线&#xff08;半径&#xff09;和这两条射线所夹角决定的圆周上的弧线所围成…