LeetCode——944. 删列造序

简介: LeetCode——944. 删列造序

944. 删列造序


题目描述

答案

我的答案

官网答案

直接遍历


题目描述


给你由 n 个小写字母字符串组成的数组 strs,其中每个字符串长度相等。


这些字符串可以每个一行,排成一个网格。例如,strs = ["abc", "bce", "cae"] 可以排列为:

abc

bce

cae

你需要找出并删除 不是按字典序升序排列的 列。在上面的例子(下标从 0 开始)中,列 0('a', 'b', 'c')和列 2('c', 'e', 'e')都是按升序排列的,而列 1('b', 'c', 'a')不是,所以要删除列 1 。

返回你需要删除的列数。


示例 1:

输入:strs = [“cba”,“daf”,“ghi”]

输出:1

解释:网格示意如下:

cba

daf

ghi

列 0 和列 2 按升序排列,但列 1 不是,所以只需要删除列 1 。


示例 2:

输入:strs = [“a”,“b”]

输出:0

解释:网格示意如下:

a

b

只有列 0 这一列,且已经按升序排列,所以不用删除任何列。


示例 3:

输入:strs = [“zyx”,“wvu”,“tsr”]

输出:3

解释:网格示意如下:

zyx

wvu

tsr

所有 3列都是非升序排列的,所以都要删除。


提示:

n == strs.length

1 <= n <= 100

1 <= strs[i].length <= 1000

strs[i] 由小写英文字母组成


答案


我的答案


class Solution {
    public int minDeletionSize(String[] strs) {
        int y = 0;
        for (int i = 0; i < strs[0].length(); i++) {
            int x = 0;
            for (String str : strs) {
                if (x <= str.charAt(i)) {
                    x = str.charAt(i);
                } else {
                    y++;
                    break;
                }
            }
        }
        return y;
    }
}


官网答案


直接遍历


思路与算法


题目要求删除不是按字典序升序排列的列,由于每个字符串的长度都相等,我们可以逐列访问字符串数组,统计不是按字典序升序排列的列。


对于第 jj 列的字符串,我们需要检测所有相邻字符是否均满足 strs[i−1][j]≤strs[i][j]。


代码

class Solution {
    public int minDeletionSize(String[] strs) {
        int row = strs.length;
        int col = strs[0].length();
        int ans = 0;
        for (int j = 0; j < col; ++j) {
            for (int i = 1; i < row; ++i) {
                if (strs[i - 1].charAt(j) > strs[i].charAt(j)) {
                    ans++;
                    break;
                }
            }
        }
        return ans;
    }
}


复杂度分析


时间复杂度:O(m×n),其中 m 为字符串数组的长度,n 为数组中每个字符串的长度,判定每一列的的字典序需要遍历字符串数组每一列,因此时间复杂度为 O(m×n)。

空间复杂度:O(1)。

相关文章
|
算法 JavaScript 前端开发
递归的递归之书:第五章到第九章
递归的递归之书:第五章到第九章
242 0
|
数据采集 运维 供应链
数据的分类和分级
数据的分类和分级
1079 0
|
XML Java 数据格式
Spring注解开发管理第三方bean及依赖注入
Spring注解开发管理第三方bean及依赖注入
228 0
成功解决TypeError: unhashable type: 'numpy.ndarray'
成功解决TypeError: unhashable type: 'numpy.ndarray'
|
存储 人工智能 运维
阿里云自研存储部件创新亮相2024全球闪存峰会
阿里云在AI时代背景下对自研存储部件进行的一系列创新实践并取得丰硕成果。
阿里云自研存储部件创新亮相2024全球闪存峰会
|
11月前
|
前端开发 编译器
为什么switch里的case没有break不行
为什么switch里的case没有break不行
177 0
|
11月前
|
计算机视觉 Python
FFMPEG学习笔记(一): 提取视频的纯音频及无声视频
本文介绍了如何使用FFmpeg工具从视频中提取纯音频和无声视频。提供了具体的命令行操作,例如使用`ffmpeg -i input.mp4 -vn -c:a libmp3lame output.mp3`来提取音频,以及`ffmpeg -i input.mp4 -c:v copy -an output.mp4`来提取无声视频。此外,还包含了一个Python脚本,用于批量处理视频文件,自动提取音频和生成无声视频。
852 1
|
SQL 安全 关系型数据库
SQL注入常用姿势
该内容介绍了SQL注入攻击和防御的一些基本概念,以及MySQL中的几个函数:`MID()`用于提取文本字段的字符,`LIMIT()`用于限制查询结果的数量,`COUNT()`计算元组数量。它还详细讲解了两种SQL注入方法:基于布尔盲注和基于时间盲注,包括如何猜解数据库、表和字段信息。此外,还提到了SQL注入工具Sqlmap的使用方法和一些绕过过滤策略。
183 0
SQL注入常用姿势
|
消息中间件 Java API
Flowable 7.0.0 release
Flowable 7.0.0 release
428 1