Inspect each column and count it once as soon as any adjacent row pair is descending.
Complexity
O(rows * columns) time and O(1) space.
Count string-grid columns that are not sorted from top to bottom.
Inspect each column and count it once as soon as any adjacent row pair is descending.
O(rows * columns) time and O(1) space.
package main
func minDeletionSize(strs []string) int {
deleted := 0
for column := range strs[0] {
for row := 1; row < len(strs); row++ {
if strs[row][column] < strs[row-1][column] {
deleted++
break
}
}
}
return deleted
}
class Solution:
def minDeletionSize(self, strs: list[str]) -> int:
return sum(any(strs[row][column] < strs[row - 1][column] for row in range(1, len(strs))) for column in range(len(strs[0])))
function minDeletionSize(strs: string[]): number {
let deleted = 0;
for (let column = 0; column < strs[0].length; column += 1) for (let row = 1; row < strs.length; row += 1) if (strs[row][column] < strs[row - 1][column]) { deleted += 1; break; }
return deleted;
}