删除列以在Python中进行排序
假设我们有一个由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