leetcode944. Delete Columns to Make Sorted
题目:给定由 N 个小写字母字符串组成的数组 A,其中每个字符串长度相等。
选取一个删除索引序列,对于 A 中的每个字符串,删除对应每个索引处的字符。 所余下的字符串行从上往下读形成列。
比如,有 A = [“abcdef”, “uvwxyz”],删除索引序列 {0, 2, 3},删除后 A 为[“bef”, “vyz”], A 的列分别为[“b”,“v”], [“e”,“y”], [“f”,“z”]。(形式上,第 n 列为 [A[0][n], A[1][n], …, A[A.length-1][n]])。
假设,我们选择了一组删除索引 D,那么在执行删除操作之后,A 中所剩余的每一列都必须是 非降序 排列的,然后请你返回 D.length 的最小可能值。
示例 1:
输入:[“cba”, “daf”, “ghi”]
输出:1
解释:
当选择 D = {1},删除后 A 的列为:[“c”,“d”,“g”] 和 [“a”,“f”,“i”],均为非降序排列。
若选择 D = {},那么 A 的列 [“b”,“a”,“h”] 就不是非降序排列了。
示例 2:
输入:[“a”, “b”]
输出:0
解释:D = {}
示例 3:
输入:[“zyx”, “wvu”, “tsr”]
输出:3
解释:D = {0, 1, 2}
提示:
1 <= A.length <= 100
1 <= A[i].length <= 1000
思路:就是对列进行遍历,当遇到该列中存在前面的字符比后面的字符大的时候,这列就该删掉了 哈哈,标记一下就行。
但是想一下,如果只需要该列有序,不说是降序还是升序呢?还是一样的思路,对每一列进行遍历,如果升序记录一下add,降序也记录一下sub,有降到升或者由升到降都是不符合要求,单独记一下count,最后只有返回count+Math.min(sub, add),就能得到删除最少的列数。
class Solution {public int minDeletionSize(String[] A) {int count = 0;int len = A[0].length();//记录单个个词语的长度int rows = A.length;//记录有多少个词语String[] columns = new String[len];Arrays.fill(columns, "");//如果只有不到一个词语或者单个词语长度为0 那就不用比了if(rows <= 1 || len == 0){return 0;}for(int i = 0; i < len; i++ ){for(int j = 1; j < rows; j++){if(A[j-1].charAt(i) > A[j].charAt(i)){count++;break;}}}return count;}
}
如果题目只是要求有序,而没说是升序还是降序:
class Solution {public int minDeletionSize(String[] A) {int len = A[0].length();//记录单个个词语的长度int rows = A.length;//记录有多少个词语String[] columns = new String[len];Arrays.fill(columns, "");//如果只有不到一个词语或者单个词语长度为0 那就不用比了if(rows <= 1 || len == 0){return 0;}for(int i = 0; i < rows; i++ ){for(int j = 0; j < len; j++){columns[j] += A[i].charAt(j);}}int add = 0;int sub = 0;int count = 0;for(int i = 0; i < len; i++){if(judge(columns[i]) == 0){add++;}else if(judge(columns[i]) == 1){sub++;}else{count++;}}return Math.min(add, sub) + count;}//判断某列是否有序,以及是哪种顺序public int judge(String str){int len = str.length();int add = 0;int sub = 0;for(int i = 0; i < len; i++){if(i+1 < len && str.charAt(i) <= str.charAt(i+1)){add = 1;}else if(i+1 < len && str.charAt(i) > str.charAt(i+1)){sub = 1;}if(add * sub == 1){return -1;}}if(add == 1){return 0;}return 1;}
}
leetcode944. Delete Columns to Make Sorted相关推荐
- [Swift]LeetCode944. 删除列以使之有序 | Delete Columns to Make Sorted
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- 【leetcode】944. Delete Columns to Make Sorted
题目如下: We are given an array A of N lowercase letter strings, all of the same length. Now, we may cho ...
- leetcode955. Delete Columns to Make Sorted II
题目链接 参考自:https://leetcode.com/problems/delete-columns-to-make-sorted-ii/discuss/203182/JavaC%2B%2BPy ...
- sql delete删除列_现有表操作中SQL DELETE列概述
sql delete删除列 In this article, we will explore the process of SQL Delete column from an existing tab ...
- linux系统运行powerbi,使用 Power BI 服务 - Power BI | Microsoft Docs
快速入门 - 使用 Power BI 服Quickstart - Getting around in Power BI service 10/12/2020 本文内容 备注 Power BI 正在转换 ...
- WaWa的奇妙冒险(第一周集训自闭现场)
第一周周记 (一)例题记录 A-Download Manager (水题) HDU - 3233 Input Output Sample Input Sample Output 理解 AC代码 B-J ...
- 程序员普遍用gmail_使Gmail更好的最佳Chrome扩展程序
程序员普遍用gmail Gmail is already pretty great, but with the addition of a few carefully selected Google ...
- tflearn教程_TFlearn 快速入门
在本教程中,您将学习使用TFLearn和TensorFlow来估计泰坦尼克号乘客使用其个人信息(如性别,年龄等)的幸存机会. 为了解决这个经典机器学习任务,我们要构建一个深层神经网络分类器. 前提条件 ...
- tflearn教程_TensorFlow/TFLearn学习案例:泰坦尼克
在本教程中,您将学习使用TFLearn和tensorflow评估泰坦尼克号乘客幸存的机会,数据根据是利用他们的个人信息(如性别.年龄等).为了解决这一经典的机器学习任务,我们要建立一个深神经网络分类器 ...
最新文章
- Velocity模板引擎的简单使用
- maven 引入外部jar包的几种方式
- 透析 | 卷积神经网络CNN究竟是怎样一步一步工作的?
- 缓存与数据库的一致性
- python把print写入文件_Python中用print方法向文件中写入内容
- 不得不看!降低Transformer复杂度的方法
- 谷歌 Chrome 同步功能可滥用于 C2 通信及数据提取
- jpeg图片转换成word
- 2022 github新建账号技巧
- verilog模块自动例化perl脚本
- 全国海关分区图(含副厅)
- 从solidWorks导出机器人URDF文件
- 心态-《积极的力量》书中的精髓:如何保持积极乐观的心态,从而提升我们的幸福感?
- 如何沿法线方向挤出面
- curl使用用户名密码
- Opus:IETF低延迟音频编解码器:API和操作手册
- CentOS Netcat 用法
- 利用github pages做免费静态网站个人免费域名空间
- BZOJ 1430 小猴打架
- 数据预处理之数据清理,数据集成,数据规约,数据变化和离散化
热门文章
- automake的使用1
- JavaScript筑基篇(二)-JavaScript数据类型
- hdu 4775 Infinite Go(暴力)
- 记录一举一动:PowerShell几行代码实现定期屏幕截屏
- 子进程和父进程的结论_Python的多进程不是随便用滴!
- Python+BI可视化分析2000W数据之后,告诉你这届毕业生有多难
- Flex移动性能检查列表
- C语言需要什么程序翻译,c语言怎么翻译? 程序怎么运行?
- java缓存内存泄漏_java – getMethod是缓存并导致内存泄漏
- linux 软件部署工具下载,linux配置 yum管理应用软件 、 快速部署Web/FTP