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

贪心:leetcode2216 美化数组的最少删除数

2216. 美化数组的最少删除数

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

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

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

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

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

贪心:删除一个数只会影响后面的数,不会影响前面的数,所以该问题满足最优子结构。

[1,1,..]第一个1必须要删,如果不删,则该数组不是 美丽数组。所以当前最优解是全局最优解,时使用贪心。

所以当遍历到下标i时,如果i是偶数,并且nums[i]==nums[i+1]那么一定要删除,第i个数一定要删除。

如果i是奇数或不相等,跳过。

需要使用一个变量维护前面删除数的个数,这样可以计算i对应删除后的下标,然后计算。

最后一个数需要单独考虑。如果是最后数组是奇数个数,就需要把最后一个数删掉。

经验:举个例子,看什么时候需要操作。

class Solution {
public:int minDeletion(vector<int>& nums) {int cnt = 0;int n = nums.size();for(int i=0;i<nums.size();i++){//[1,1]第一个1必须要删,否则后面就没有机会删,所以是当前最优解就是删除第一个1//如果删完之后的下标idx%2==0并且nums[i]==nums[i+1],那,么nums[i]就需要被删除。if(i+1<n&&(i-cnt)%2==0&&nums[i]==nums[i+1])cnt++;}if((n-cnt)%2!=0){cnt++;}return cnt;}
};

相关文章:

  • Pickcode:教孩子们编码的新视觉语言
  • Python 使用SQLAlchemy数据库模块
  • logic-flow 使用过程中遇到的bug - 拖动节点到画布的时候,鼠标松开,节点不落在画布,仍旧跟着鼠标走
  • 【23真题】最后一套两电一邮,纸老虎偏多!
  • go sync.map源码解读
  • UDP网络套接字编程
  • JS——日期字符串yyyymmdd转yyyy-mm-dd的两种方法
  • TS是什么、为什么、怎么办
  • git代码提交命令(如何提交代码)
  • 装饰器设计模式是什么?什么是 Decorator 装饰器设计模式?Python 装饰器设计模式示例代码
  • Spark---基于Standalone模式提交任务
  • 三十分钟学会Shell(上)
  • 51单片机的智能浇花系统【含proteus仿真+程序+报告+原理图】
  • vue3的 nextTick()的使用
  • leetcode 240. 搜索二维矩阵 II
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Angular4 模板式表单用法以及验证
  • If…else
  • log4j2输出到kafka
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Ruby 2.x 源代码分析:扩展 概述
  • Spring Cloud中负载均衡器概览
  • SQLServer插入数据
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 将 Measurements 和 Units 应用到物理学
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 如何选择开源的机器学习框架?
  • 如何在GitHub上创建个人博客
  • 用jQuery怎么做到前后端分离
  • 做一名精致的JavaScripter 01:JavaScript简介
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​Spring Boot 分片上传文件
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #include
  • (javascript)再说document.body.scrollTop的使用问题
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (排序详解之 堆排序)
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • *** 2003
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET Standard 的管理策略
  • .NET 服务 ServiceController
  • .net反混淆脱壳工具de4dot的使用
  • .NET性能优化(文摘)
  • /etc/fstab和/etc/mtab的区别
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [04] Android逐帧动画(一)
  • [Android] Upload package to device fails #2720
  • [COGS 622] [NOIP2011] 玛雅游戏 模拟
  • [Django 0-1] Core.Checks 模块
  • [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
  • [Flutter]WindowsPlatform上运行遇到的问题总结
  • [Google Guava] 1.1-使用和避免null
  • [IE编程] 了解Urlmon.dll和Wininet.dll