当前位置:首页 > 编程笔记 > 正文
已解决

2216. 美化数组的最少删除数 --力扣 --JAVA

来自网友在路上 11108110提问 提问时间:2023-11-22 00:31:42阅读次数: 110

最佳答案 问答题库1108位专家为你答疑解惑

题目

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

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

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

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

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

解题思路

  1. 首先对数组长度为1的特殊情况进行单独处理,即直接删除唯一元素;
  2. 创建变量表示删除元素次数,当前索引i(index)和下级索引i + 1(next);
  3. 通过while循环来遍历数组和对数组元素进行校验;
  4. 对删除元素后的数组进行判断是否为偶数,非偶数则需要再删除一个元素(首元素或尾元素,不影响原有数据结构);

代码展示

class Solution {public int minDeletion(int[] nums) {int n = nums.length;if(n == 1){return 1;}int deleteNum = 0;//index 表示i   next表示i+1int index = 0;int next = 1;while (next < n){if(nums[index] == nums[next]){deleteNum++;next++;} else {index = next + 1;next += 2;}}return (n - deleteNum) % 2 == 0 ? deleteNum : deleteNum + 1;}
}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"2216. 美化数组的最少删除数 --力扣 --JAVA":http://eshow365.cn/6-41715-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!