題目
給定由 n 個字串組成的陣列 strs,其中每個字串長度相等。
字典序(strs[0] <= strs[1] <= strs[2] ... <= strs[n - 1])排列的,
然後請你返回 answer.length 的最小可能值。
示例 1:輸入:strs = ["ca","bb","ac"] 輸出:1
現在 strs 中元素是按字典排列的 (即,strs[0] <= strs[1] <= strs[2])。
示例 2:輸入:strs = ["xc","yb","za"] 輸出:0
注意 strs 的行不需要按字典序排列。
也就是說,strs[0][0] <= strs[0][1] <= ... 不一定成立。
示例 3:輸入:strs = ["zyx","wvu","tsr"] 輸出:3
解釋:我們必須刪掉每一列。
提示:n == strs.length
1 <= n <= 100
1 <= strs[i].length <= 100
strs[i] 由小寫英文字母組成
解題思路分析1、遍歷;時間複雜度O(n^2),空間複雜度O(n)
func minDeletionSize(strs []string) int { res := 0 cur := make([]string, len(strs)) for i := 0; i < len(strs[0]); i++ { temp := make([]string, len(strs)) copy(temp, cur) for j := 0; j < len(temp); j++ { temp[j] = temp[j] + string(strs[j][i]) } if judge(temp) == true { // 加上當前列後,是升序的就用,不是就刪除 cur = temp } else { res++ } } return res}func judge(strs []string) bool { for i := 0; i < len(strs)-1; i++ { if strs[i] > strs[i+1] { return false } } return true}
總結Medium題目,採用貪心策略,遍歷加入當前列後,是升序就用,不是就刪除
最新評論