一、题目描述
输入:["cba", "daf", "ghi"]
输出:1
解释:
当选择 D = {1},删除后 A 的列为:["c","d","g"] 和 ["a","f","i"],均为非降序排列。
若选择 D = {},那么 A 的列 ["b","a","h"] 就不是非降序排列了。
提示:
1 <= A.length <= 100
1 <= A[i].length <= 1000
二、题解
方法一:枚举
这么一大串文字,然鹅其实统计降序序列的个数…
思路
枚举每一列,如果遇到 grid[r-1][c] > grid[r][c]
就证明这一列是需要被删除的,count++
一开始: 并不知道自己写的就是贪心…
class Solution {
public:
int minDeletionSize(vector<string>& A) {
int n = A.size(), m = A[0].size(), ans = 0;
for (int j = 0; j < m; j++)
for (int i = 1; i < n; i++) {
if (A[i-1][j] > A[i][j]) {
ans++; break;
}
}
return ans;
}
};
复杂度分析
- 时间复杂度: O ( N × A [ 0 ] . l e n g t h ) O(N × A[0].length) O(N×A[0].length),
- 空间复杂度: O ( N × A [ 0 ] . l e n g t h ) O(N × A[0].length) O(N×A[0].length),