leetcode 955

955: 删列造序Ⅱ

题意:在执行删除操作之后,最终得到的数组的元素是按 字典序strs[0] <= strs[1] <= strs[2] ... <= strs[n - 1])排列的。

从上往下一列一列遍历:

  • 一旦遇到a[i] > b[i],直接不符
  • 一旦遇到a[i] < b[i],直接符合(后面不用看了)
  • 如果遇到a[i] = b[i],目前符合,继续往后看

第一列是升序,不删;对于第二列,此时第二列分成了两组 [c,d] 和 [a,b],只需判断组内字母是不是升序,而不是完整地比较第二列的四个字母。

复制代码
class Solution {
public:
    int minDeletionSize(vector<string>& strs) {
        int n=strs.size(),m=strs[0].size();
        vector<bool> del(n-1,false);

        int ans=0;
        for(int j=0;j<m;j++){
            bool keep=true;
            for(int i=1;i<n;i++){
                if(!del[i-1] && strs[i-1][j]>strs[i][j]){
                    keep=false; //删除
                    break;
                }
            }
            if(keep){
                for(int i=1;i<n;i++){
                    if(strs[i-1][j]<strs[i][j]) del[i-1]=true;
                }
            }
            else ans++;
        }
        return ans;
    }
};
相关推荐
L_09077 小时前
【C++】高阶数据结构 -- 红黑树
数据结构·c++
A_nanda8 小时前
c# MOdbus rto读写串口,如何不相互影响
算法·c#·多线程
代码雕刻家9 小时前
2.4.蓝桥杯-分巧克力
算法·蓝桥杯
Ulyanov9 小时前
顶层设计——单脉冲雷达仿真器的灵魂蓝图
python·算法·pyside·仿真系统·单脉冲
智者知已应修善业11 小时前
【查找字符最大下标以*符号分割以**结束】2024-12-24
c语言·c++·经验分享·笔记·算法
划破黑暗的第一缕曙光11 小时前
[数据结构]:5.二叉树链式结构的实现1
数据结构
91刘仁德11 小时前
c++类和对象(下)
c语言·jvm·c++·经验分享·笔记·算法
青桔柠薯片11 小时前
数据结构:单向链表,顺序栈和链式栈
数据结构·链表
diediedei11 小时前
模板编译期类型检查
开发语言·c++·算法
阿杰学AI12 小时前
AI核心知识78——大语言模型之CLM(简洁且通俗易懂版)
人工智能·算法·ai·语言模型·rag·clm·语境化语言模型