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;
    }
};
相关推荐
TechNomad2 小时前
二分搜索算法的介绍和使用
算法
一起养小猫2 小时前
LeetCode100天Day4-盛最多水的容器与两数之和II
java·数据结构·算法·leetcode
xie_pin_an2 小时前
深入解析 C 语言排序算法:从快排优化到外排序实现
c语言·算法·排序算法
Hcoco_me2 小时前
机器学习核心概念与主流算法(通俗详细版)
人工智能·算法·机器学习·数据挖掘·聚类
Hcoco_me2 小时前
嵌入式场景算法轻量化部署checklist
算法
咸鱼加辣2 小时前
【python面试】Python 的 lambda
javascript·python·算法
Jerryhut2 小时前
sklearn函数总结十二 —— 聚类分析算法K-Means
算法·kmeans·sklearn
Swift社区3 小时前
LeetCode 453 - 最小操作次数使数组元素相等
算法·leetcode·职场和发展
八月ouc3 小时前
Python实战小游戏(二): 文字冒险游戏
数据结构·python·文字冒险