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

ログを切り捨ててPythonのデータベースに完全に保存するための最大サイズを見つけるプログラム


ログと呼ばれる数値のリストと別の値の制限があるとします。 logs [i]の各要素は、i番目のユーザーによって生成されたログのサイズを表します。また、limitは、データベースに保存できるログの合計サイズを表します。ログ内のすべてのログを切り捨てて最大サイズxになり、左側のログサイズの合計が最大で制限されるように、最大​​のxを見つける必要があります。ログを切り捨てる必要がない場合は、最大のログサイズを返すだけです。

したがって、入力がlogs =[500、200、10000、500、4000] limit =3000のようである場合、ログを900に切り捨てるため、出力は900になり、[500、200、900、500 、900]現在の合計は3000

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

  • lo:=0
  • hi:=1+ログの最大数
  • lo + 1 <こんにちは、do
    • mi:=lo +(hi --lo)/2のフロア
    • リストに存在するすべての要素の合計が(ログの各ログインのmiとlogの最小値)<=limitの場合、
      • lo:=mi
    • それ以外の場合、
      • こんにちは:=mi
  • return lo

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

def solve(logs, limit):
   lo, hi = 0, max(logs) + 1
   while lo + 1 < hi:
      mi = lo + (hi - lo) // 2
      if sum(min(mi, log) for log in logs) <= limit:
         lo = mi
      else:
         hi = mi
   return lo

logs = [500, 200, 10000, 500, 4000]
limit = 3000
print(solve(logs, limit))

入力

[500, 200, 10000, 500, 4000], 3000

出力

900

  1. 配列内の最大の要素を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、配列の最大要素を計算する必要があります。 ここでは、ループ全体をトラバースして最大の要素を計算し、要素を取得するブルートフォースアプローチを使用します。 以下の実装を観察できます。 例 # largest function def largest(arr,n):    #maximum element    max = arr[0]    # traverse the whole loop    for

  2. 配列内の最大の要素を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n):    #maximal element