Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで最短時間でタスクをスケジュールするプログラム


タスクと呼ばれる値のリストがあり、それぞれの異なる値が異なるタスクタイプを表し、負でない整数kもあるとします。各タスクは1分で完了しますが、同じタイプの2つのタスクを実行するまでにk分待つ必要があります。いつでも、タスクを実行したり、待機したりできます。すべてのタスクを完了するのにかかる最小の時間を見つける必要があります。

したがって、入力がnums =[2、2、2、3、3、2]、k =1の場合、最適な順序は[2、3、2、3、2]であるため、出力は7になります。待っています、2]。

これを解決するには、次の手順に従います-

  • c:=nums単位のすべての値のカウント

  • ans:=0、lastsize:=0

  • cがゼロ以外の場合、実行

    • lastsize:=cのサイズ

    • cの最も一般的な(k + 1)値の各値xについて、実行します

      • c [x]:=c [x] − 1

        • c [x]が0と同じ場合、

          • c [x]

            を削除します
    • ans:=ans + k + 1

  • ans + lastsizeを返す-(k + 1)

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def solve(self, nums, k):
      from collections import Counter
      c = Counter(nums)
      ans = 0
      lastsize = 0
      while c:
         lastsize = len(c)
         for x, _ in c.most_common(k + 1):
            c[x] -= 1
            if c[x] == 0:
               del c[x]
         ans += k + 1
      return ans + lastsize - (k + 1)
ob1 = Solution()
nums = [2, 2, 2, 3, 3, 2]
k = 1
print(ob1.solve(nums, k))

入力

[2, 2, 2, 3, 3, 2], 1

出力

7

  1. リスト内の最小数を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal

  2. Pythonプログラムの実行時間を取得するにはどうすればよいですか?

    プログラムの実行の時間を測定するには、time.clock()またはtime.time()関数を使用します。 Pythonのドキュメントには、この関数はベンチマークの目的で使用する必要があると記載されています。 例 import time t0= time.clock() print("Hello") t1 = time.clock() - t0 print("Time elapsed: ", t1 - t0) # CPU seconds elapsed (floating point) 出力 これにより、出力が得られます- Time elapsed