Python中刪除列以使排序


假設我們有一個包含N個小寫字母字串的陣列A,所有字串的長度相同。現在,我們可以選擇任意一組刪除索引,對於每個字串,我們刪除這些索引中的所有字元。

例如,如果我們有一個像["abcdef","uvwxyz"]這樣的陣列A,刪除索引為{0, 2, 3},那麼刪除後的最終陣列將為["bef", "vyz"],A的剩餘列為["b","v"], ["e","y"], 和 ["f","z"]。

假設我們選擇了一組刪除索引D,例如在刪除後,A中每一列都是非遞減排序的。我們必須找到D的最小可能長度。

因此,如果輸入類似於["cba","daf","ghi"],則輸出為1,這是因為在選擇D = {1}後,每一列["c","d","g"]和["a","f","i"]都是非遞減排序的。如果我們選擇D = {},則列["b","a","h"]將不是非遞減排序的。

為了解決這個問題,我們將遵循以下步驟:

  • A = 透過從陣列中獲取字串並將字元分成不同的列來建立一個矩陣
  • B = 新建一個空列表
  • 對於A中的每一列,執行:
    • 如果該列已經排序,則將0插入B
    • 否則,將1插入B
  • 返回B中所有元素的總和

讓我們看看下面的實現,以便更好地理解:

示例

線上演示

class Solution:
   def minDeletionSize(self, A):
      return sum([1-(sorted(col)==list(col)) for col in zip(*A)])
ob = Solution()
print(ob.minDeletionSize(["cba","daf","ghi"]))

輸入

["cba","daf","ghi"]

輸出

1

更新於:2020年7月6日

205 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.