假设我们有一个由N个小写字母字符串组成的数组,该数组的名称为A,所有字符串的长度相同。现在,我们可以选择任何一组删除索引,并且对于每个字符串,我们都删除这些索引中的所有字符。
例如,如果我们有一个数组A,例如[“ abcdef”,“ uvwxyz”],删除索引是{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中的col
如果col已经排序,则将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