> [!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; } }; ```