給定由n
個小寫字母字串組成的陣列a
,其中每個字串長度相等。
選取乙個刪除索引序列,對於a
中的每個字串,刪除對應每個索引處的字元。 所餘下的字串行從上往下讀形成列。
比如,有a = ["abcdef", "uvwxyz"]
,刪除索引序列,刪除後
a
為["bef", "vyz"]
,a
的列分別為["b","v"], ["e","y"], ["f","z"]
。(形式上,第 n 列為[a[0][n], a[1][n], ..., a[a.length-1][n]]
)。
假設,我們選擇了一組刪除索引d
,那麼在執行刪除操作之後,a
中所剩餘的每一列都必須是非降序排列的,然後請你返回d.length
的最小可能值。
示例 1:
輸入:["cba", "daf", "ghi"]
輸出:1
解釋:當選擇 d = ,刪除後 a 的列為:["c","d","g"] 和 ["a","f","i"],均為非降序排列。
若選擇 d = {},那麼 a 的列 ["b","a","h"] 就不是非降序排列了。
示例 2:
輸入:["a", "b"]
輸出:0
解釋:d = {}
示例 3:
輸入:["zyx", "wvu", "tsr"]
輸出:3
解釋:d =
1 <= a.length <= 100
1 <= a[i].length <= 1000
題目意思就是每一列中有多少個不是按照字典序排序的
兩個for
迴圈就行了
class solution
return ans;}}
;
函式zip()
:
zip()
函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用*
號操作符,可以將元組解壓為列表。
>>
> a =[1
,2,3
]>>
> b =[4
,5,6
]>>
> c =[7
,8,9
,10]>>
> zipped =
zip(a, b)
>>
> zipped[(
1,4)
,(2,
5),(
3,6)
]>>
>
zip(a, c)[(
1,7)
,(2,
8),(
3,9)
]>>
>
zip(
*zipped)[(
1,2,
3),(
4,5,
6)]
所以這題就把給的陣列解壓成乙個個列表,然後和排列後的列表對比就可以了
class
solution
(object):
defmindeletionsize
(self, a)
:"""
:type a: list[str]
:rtype: int
"""ans =
0for i in
zip(
*a):
iflist
(i)!=
sorted
(i):
ans +=
1return ans
LeetCode 944 刪列造序
題目描述 給定由 n 個小寫字母字串組成的陣列 a,其中每個字串長度相等。刪除 操作的定義是 選出一組要刪掉的列,刪去 a 中對應列中的所有字元,形式上,第 n 列為 a 0 n a 1 n a a.length 1 n 比如,有 a abcdef uvwxyz 要刪掉的列為 刪除後 a 為 bef...
LeetCode 944 刪列造序
給你由 n 個小寫字母字串組成的陣列 strs,其中每個字串長度相等。這些字串可以每個一行,排成乙個網格。例如,strs abc bce cae 可以排列為 abcbce cae你需要找出並刪除 不是按字典序公升序排列的列。在上面的例子 下標從 0 開始 中,列 0 a b c 和列 2 c e e...
944 刪列造序
給你由n個小寫字母字串組成的陣列strs,其中每個字串長度相等。這些字串可以每個一行,排成乙個網格。例如,strs abc bce cae 可以排列為 abc bcecae你需要找出並刪除不是按字典序公升序排列的列。在上面的例子 下標從 0 開始 中,列 0 a b c 和列 2 c e e 都是按...