944. Delete Columns to Make Sorted*

944. Delete Columns to Make Sorted*

https://leetcode.com/problems/delete-columns-to-make-sorted/

題目描述

We are given an array A of N lowercase letter strings, all of the same length.

Now, we may choose any set of deletion indices, and for each string, we delete all the characters in those indices.

For example, if we have an array A = ["abcdef","uvwxyz"] and deletion indices {0, 2, 3}, then the final array after deletions is ["bef", "vyz"], and the remaining columns of A are ["b","v"], ["e","y"], and ["f","z"]. (Formally, the c-th column is [A[0][c], A[1][c], ..., A[A.length-1][c]]).

Suppose we chose a set of deletion indices D such that after deletions, each remaining column in A is in non-decreasing sorted order.

Return the minimum possible value of D.length.

Example 1:

Input: A = ["cba","daf","ghi"]
Output: 1
Explanation: 
After choosing D = {1}, each column ["c","d","g"] and ["a","f","i"] are in non-decreasing sorted order.
If we chose D = {}, then a column ["b","a","h"] would not be in non-decreasing sorted order.

Example 2:

Input: A = ["a","b"]
Output: 0
Explanation: D = {}

Example 3:

Input: A = ["zyx","wvu","tsr"]
Output: 3
Explanation: D = {0, 1, 2}

Constraints:

  • 1 <= A.length <= 100
  • 1 <= A[i].length <= 1000

C++ 實現 1

比如將 A 弄成如下形式:

## 來自 Example 1
"cba"
"daf"
"ghi"

如果發現第 j 行的字母比它上一行的字母小, 那麼說明這一列需要刪除.

class Solution {
public:
    int minDeletionSize(vector<string>& A) {
        int N = A.size();
        int m = A[0].size();
        int res = 0;
        for (int i = 0; i < m; ++ i) {
            for (int j = 1; j < N; ++ j) {
                if (A[j - 1][i] > A[j][i]) { // 後一行的字母更小, 即不是升序
                    ++ res;
                    break;
                }
            }
        }
        return res;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章