> [!info]
> 美丽数组的定义
> 1. 长度为偶数
> 2. 每个偶数下标元素的值 ≠ 下一个元素的值
求一个数组变成美丽数组所要删除的元素个数
先看一下删除元素后发生了什么,例如 $[1,1,2,2,3]$ ,删除第一个元素后数组长度变成了 $4$ ,新数组为 $[1,2,2,3]$ ,每删除一个元素都整体前移太麻烦了,不如下标向后移,那么删除后的数组下标和原数组的下标关系是什么呢
$原数组下标 - 删除的元素个数 = 新数组下标$
比如删除了第一个元素 $1$ ,已删除元素个数为 $1$ ,原数组第二个 $1$ 的下标为 $1$ ,换算删除后数组下标则是 $1-1=0$
保存已删除元素个数,遍历原数组,检查偶数坐标元素和下一个元素是否符合要求,遍历结束后已删除元素个数就满足了美丽数组定义的第二点
再判断长度是否符合要求,如果是奇数则去掉最后一个元素即可,已删除元素个数 + 1
```cpp
class Solution
{
public:
int minDeletion(vector<int> &nums)
{
auto cnt = 0;//已删除元素个数
for (auto i = 0; i < nums.size() - 1; i++)
{
auto current_idx = i - cnt;
if (current_idx % 2 == 0 && nums[i] == nums[i + 1])
{
cnt++;
}
}
if ((nums.size() - cnt) % 2)cnt++;
return cnt;
}
};
```