Python程式:根據時間區間查詢可以選修的最大課程數


假設我們有一系列區間,格式為[開始時間, 結束時間],表示課程的開始和結束時間。我們必須找到可以選修的最大課程數,假設我們一次只能選修一門課程,並且一門課程的開始時間必須晚於上一門課程的結束時間。

因此,如果輸入類似於 times = [[3, 6],[6, 9],[7, 8],[9, 11]],則輸出為 3,因為我們可以選修課程 [[3, 6], [7, 8], [9, 11]]

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

  • 根據結束時間排序課程

  • 計數器 := 0,結束時間 := -1

  • 對於 i 從 0 到 times 的大小,執行:

    • 如果 times[i, 0] > end 為真,則

      • 計數器 := 計數器 + 1

      • 結束時間 := times[i, 1]

  • 返回計數器

讓我們看看下面的實現來更好地理解。

示例

 線上演示

class Solution:
   def solve(self, times):
      times.sort(key=lambda x: x[1])

      counter = 0
      end = -1

      for i in range(len(times)):
         if times[i][0] > end:
            counter += 1
            end = times[i][1]
      return counter

ob = Solution()
times = [
   [3, 6],
   [6, 9],
   [7, 8],
   [9, 11]
]
print(ob.solve(times))

輸入

[ [3, 6],[6, 9],[7, 8],[9, 11]]

輸出

3

更新於:2020年11月10日

189 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.