960. 删列造序 III
![](https://i-blog.csdnimg.cn/blog_migrate/53cbdfeaa26b3a5b5f53a320c90ac2be.png)
![](https://i-blog.csdnimg.cn/blog_migrate/39e42a2199421180c72ab9bf4b31b4bb.png)
【DP】把LIS问题扩展到N维了,还是用dp[i]表示当前走到每个字符串中下标为 i 的字符时的最大长度,对于dp[i] 需要枚举 dp[j] j ∈ [0, i),只有当每个字符串的str.charAt(i) >= str.charAt(j) 时才能更新dp[i]
class Solution {
public int minDeletionSize(String[] strs) {
int n = strs[0].length(), m = strs.length, ans = 0;
int[] dp = new int[n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
boolean flag = true;
for (int k = 0; k < m; k++) {
if (strs[k].charAt(i) < strs[k].charAt(j)) {
flag = false;
break;
}
}
if (flag) {
dp[i] = Math.max(dp[i], dp[j]);
}
}
dp[i]++;
ans = Math.max(dp[i], ans);
}
return n - ans;
}
}