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

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

我的做法:
使用一个index作为检查坐标,当index为偶数时检查当前数和后一个数是否相等,相等的话,后一个数设置为-1,注意如果相等,要把相等的数保留下来last,以便接下来检查,防止出现2333这种连续的情况,但是当接下来检查通过要及时把保留数last变回初识值。另外要注意遍历到数组最后一个元素时,就不用判断了。

class Solution {
public:int minDeletion(vector<int>& nums) {int cnt = 0;int n = nums.size();int index = -1, last = -1;for (int i = 0; i < n; ++i) {if (nums[i] == last && index % 2 == 0) {nums[i] = -1;++cnt;} else if (nums[i] != -1) {++index;} else {continue;}if (i == n - 1) break;if (index % 2 == 0) {if (nums[i] == nums[i + 1]) {nums[i + 1] = -1;last = nums[i];++cnt;} else {continue;}} else {continue;}}if ((index + 1) % 2 != 0) {++cnt;}return cnt;}
};

其中,很多continue语句可以省略。
更简单的写法:
其实相当于用cnt代替index进行计数了,变换后的数组长度等于n-cnt

class Solution {
public:int minDeletion(vector<int>& nums) {int n = nums.size(), cnt = 0;for (int i = 0; i < n; ++i) {if (i < n - 1 && (i - cnt) % 2 == 0 && nums[i] == nums[i + 1]) {++cnt;}}return (n - cnt) % 2 == 0 ? cnt: cnt + 1;}
};
http://www.lryc.cn/news/239025.html

相关文章:

  • 竞赛 题目:基于深度学习的人脸表情识别 - 卷积神经网络 竞赛项目 代码
  • 基于安卓android微信小程序的好物分享系统
  • 【Spring Boot】使用WebSocket协议完成来单提醒及客户催单功能
  • 如何有效的禁止Google Chrome自动更新?
  • OpenShift 4 - 部署 RHODS 环境,运行 AI/ML 应用(视频)
  • MySQL 的执行原理(二)
  • postgres in (?,?) 和 =any(?) 用法/性能对比
  • 46. Qt Android调用Java代码进行辅助开发 -- 框架搭建
  • NX二次开发UF_CAM_PREF_set_logical_value 函数介绍
  • docker下移除不使用的镜像、容器、卷、网络
  • C语言基本算法之选择排序
  • 服务器数据恢复—raid5上层NTFS分区误删除/格式化的数据恢复案例
  • 【漏洞复现】IP-guard WebServer 存在远程命令执行漏洞
  • 人工智能学习阶段有哪些?
  • vue 中为什么需要虚拟DOM、VDOM 是如何生成的、VDOM 如何做 diff 的?
  • 数据分析思维与模型:相关分析法
  • 【算法萌新闯力扣】:两句话中的不常见单词
  • Xilinx Zynq-7000系列FPGA任意尺寸图像缩放,提供两套工程源码和技术支持
  • 基于 Glibc 版本升级的 DolphinDB 数据查询性能优化实践
  • 【顺序表的应用-通讯录的实现】
  • [Spring Cloud] Nacos 实战 + Aws云服务器
  • SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍
  • 身份证号码校验
  • ArcGIS如何处理并加载Excel中坐标数据?
  • C++标准模板(STL)- 类型支持 (类型修改,从给定类型移除 const 或/与 volatile 限定符,std::remove_cv)
  • nodejs搭建本地服务
  • 如何看待Unity新收费模式?
  • Excel数据可视化—波士顿矩阵图【四象限图】
  • 【Java】智慧工地管理系统源代码,支持二次开发,SaaS模式
  • Lstm+transformer的刀具磨损预测