首頁>技術>

題目

給定由 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題目,採用貪心策略,遍歷加入當前列後,是升序就用,不是就刪除

9
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 「Flink實時資料分析系列」1. 有狀態流處理簡介