leetcode 955

955: 删列造序Ⅱ

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

从上往下一列一列遍历:

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

第一列是升序,不删;对于第二列,此时第二列分成了两组 c,da,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;
    }
};
相关推荐
luj_17688 小时前
星火科技助力边远地区防病攻坚
c语言·开发语言·c++·经验分享·算法
木木子2210 小时前
# 鸿蒙 ArkTS 实战:秒表 Stopwatch(示例 5)
数据结构·华为·list·harmonyos
geats人山人海11 小时前
数据结构第六章c语言 树的存储下二叉树的概念和存储
c语言·数据结构·算法
漂流瓶jz12 小时前
UVA-12627 奇怪的气球膨胀 题解答案代码 算法竞赛入门经典第二版
算法·图论·递归·aoapc·算法竞赛入门经典·uva·12627
jarvisuni12 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
kobesdu12 小时前
流形上的优化:SO(3)与SE(3)的广义加减法在FAST-LIO中如何简化状态估计
人工智能·算法·fastlio
白狐_79812 小时前
408 数据结构算法题 01:线性表暴力求解保分指南
java·数据结构·算法
乐观勇敢坚强的老彭13 小时前
C++信奥:开关门、开关灯问题
开发语言·c++·算法
冻柠檬飞冰走茶13 小时前
PTA基础编程题目集 7-31 字符串循环左移(C语言实现)
c语言·开发语言·数据结构·算法
Hi李耶13 小时前
【LeetCode】4-寻找两个正序数组的中位数
算法·leetcode·职场和发展