[LeetCode] 944. 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

這道題給了一個字符串數組,里面的字符串長度均相同,這樣如果將每個字符串看作一個字符數組的話,於是就可以看作的一個二維數組,題目要求所有列上的字符是非遞減順序的,問最少需要刪掉多少列。這道題唯一的難點就是讀懂晦澀的題意,估計是出自非母語之手的,其他的並沒有太大的難度,就是一個按列來遍歷二維數組的操作,若當前位置的字符小於等於下一行同列上的字符,則跳過繼續比較下一行和下下一行上的字符。否則說明需要刪掉該列,結果 res 自增1,且 break 掉當前列即可,參見代碼如下:


class Solution {
public:
    int minDeletionSize(vector<string>& A) {
        int n = A.size(), len = A[0].size(), res = 0;
        for (int j = 0; j < len; ++j) {
            for (int i = 0; i < n - 1; ++i) {
                if (A[i][j] <= A[i + 1][j]) continue;
                ++res;
                break;
            }
        }
        return res;
    }
};

Github 同步地址:

https://github.com/grandyang/leetcode/issues/944


參考資料:

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


LeetCode All in One 題目講解匯總(持續更新中...)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM