Python程式:查詢可以將列表分割成子列表的個數,以便最終對列表進行排序


假設我們有一個名為nums的數字列表。我們可以將列表劃分為一些單獨的子列表,然後對每個部分進行排序。我們必須找到我們可以劃分的子列表的最大數量,以便nums作為一個整體在之後被排序。

因此,如果輸入類似於nums = [4, 3, 2, 1, 7, 5],則輸出將為2,因為我們可以對像[4, 3, 2, 1]和[7, 5]這樣的子列表進行排序。

要解決此問題,我們將遵循以下步驟

  • count := 0
  • main_sum := 0, sorted_sum := 0
  • 對於nums中的每個元素x和nums排序後的形式中的每個元素y,執行以下操作
    • main_sum := main_sum + x
    • sorted_sum := sorted_sum + y
    • 如果main_sum與sorted_sum相同,則
      • count := count + 1
  • 返回count

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

示例

線上演示

class Solution:
   def solve(self, nums):
      count = 0
      main_sum = sorted_sum = 0

      for x, y in zip(nums, sorted(nums)):
         main_sum += x
         sorted_sum += y
         if main_sum == sorted_sum:
            count += 1

      return count

ob = Solution()
nums = [4, 3, 2, 1, 7, 5]
print(ob.solve(nums))

輸入

[4, 3, 2, 1, 7, 5]

輸出

2

更新於: 2020年11月26日

123 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告