Python中删除列以使排序
假设我们有一个包含N个小写字母字符串的数组A,所有字符串的长度相同。现在,我们可以选择任意一组删除索引,对于每个字符串,我们删除这些索引中的所有字符。
例如,如果我们有一个像["abcdef","uvwxyz"]这样的数组A,删除索引为{0, 2, 3},那么删除后的最终数组将为["bef", "vyz"],A的剩余列为["b","v"], ["e","y"], 和 ["f","z"]。
假设我们选择了一组删除索引D,例如在删除后,A中每一列都是非递减排序的。我们必须找到D的最小可能长度。
因此,如果输入类似于["cba","daf","ghi"],则输出为1,这是因为在选择D = {1}后,每一列["c","d","g"]和["a","f","i"]都是非递减排序的。如果我们选择D = {},则列["b","a","h"]将不是非递减排序的。
为了解决这个问题,我们将遵循以下步骤:
- A = 通过从数组中获取字符串并将字符分成不同的列来创建一个矩阵
- B = 新建一个空列表
- 对于A中的每一列,执行:
- 如果该列已经排序,则将0插入B
- 否则,将1插入B
- 返回B中所有元素的总和
让我们看看下面的实现,以便更好地理解:
示例
class Solution: def minDeletionSize(self, A): return sum([1-(sorted(col)==list(col)) for col in zip(*A)]) ob = Solution() print(ob.minDeletionSize(["cba","daf","ghi"]))
输入
["cba","daf","ghi"]
输出
1
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP