题目来源:
leetcode题目,网址:2216. 美化数组的最少删除数 - 力扣(LeetCode)
解题思路:
假设在第 i 个位置前已删除 res 个元素。遍历原数组,对于第 i 个元素,若 (i-res)%2==0,则其在美化后数组的 位置是偶数,删去其后与其相连的相同元素并将 res 加上对应元素个数后,移动至第一个不相等元素处,否则直接跳过。最后判断 (nums.size()-res)%2 是否为 0, 若是 加一后返回,否则直接返回。
解题代码:
- class Solution {
- public:
- int minDeletion(vector<int>& nums) {
- int res=0;
- for(int i=0,cnt=0;i<nums.size();i++,cnt++){
- if(cnt%2!=0){
- continue;
- }
- for(int j=i+1;j<nums.size();j++){
- if(nums[i]==nums[j]){
- res++;
- i=j;
- }else{
- break;
- }
- }
-
- }
- if((nums.size()-res)%2!=0){
- res++;
- }
- return res;
- }
- };
总结:
官方题解在删除字符时,是从前往后删除,保留最后一个字符,而我是保留第一个字符。