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

​​题目来源:

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;
    }
};
复制代码

总结:

官方题解在删除字符时,是从前往后删除,保留最后一个字符,而我是保留第一个字符。


相关推荐
jinyishu_19 小时前
模拟实现 C++ 栈和队列——从适配器模式看懂 STL 容器之美
java·c++·适配器模式
hehelm19 小时前
AI大模型接入SDK—通用模块设计
linux·开发语言·c++
什巳20 小时前
JAVA练习309- 二叉树的层序遍历
java·数据结构·算法·leetcode
hold?fish:palm1 天前
RDB全量快照备份
c++·redis·后端
什巳1 天前
JAVA练习306- 翻转二叉树
java·数据结构·算法·leetcode
smj2302_796826521 天前
解决leetcode第3989题网格中保持一致的最大列数
python·算法·leetcode
盐焗鹌鹑蛋1 天前
【C++】C++11:列表初始化、声明、STL升级
c++
ComputerInBook1 天前
c 和 c++ 中的宏块(macro)
c语言·c++··宏块·宏指令
AA陈超1 天前
004 T02 - 俯视角摄像机系统 设计文档
网络·c++·ue5·虚幻引擎
bu_shuo1 天前
c与cpp中的argc和argv
c语言·c++·算法