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

Pythonでフォルダからホームに戻るために必要な最小限のジャンプを見つけるためのプログラム


フォルダに入力するパスがあるログがあるとすると、-

のような異なる記号が存在する可能性があります。
  • "../":現在のフォルダから親フォルダに移動します。 (メインフォルダにいる場合は、場所を変更しないでください。)

  • "./":現在のフォルダに残ります。

  • "x /":xという名前の子フォルダーに移動します。

ログから、停止した最後のフォルダーからメインフォルダーに戻るために必要な操作の最小数を見つける必要があります。

したがって、入力がlogs =["Dir1 /"、 "Dir2 /"、 "../"、 "Dir2 /"、 "Dir3 /"、 "./"]の場合、出力は3

Pythonでフォルダからホームに戻るために必要な最小限のジャンプを見つけるためのプログラム

画像から、家に着くには3回後退する必要があることがわかります。

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

  • stk:=新しいリスト

  • ログ内のアイテムiごとに、実行します

    • iが"../"と同じで、stkのサイズが0より大きい場合、

      • stkから最後の要素を削除する

    • それ以外の場合、iが「./」と同じでなく、iが「../」と同じでない場合は、

      • stkの最後にiを挿入します

    • それ以外の場合

      • 次のイテレーションに行く

  • stk内のアイテムの数を返す

例(Python)

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

def solve(logs):
   stk = []
   for i in logs:
      if i == "../" and len(stk) > 0:
         stk.pop()
      elif i != "./" and i != "../":
         stk.append(i)
      else:
         continue
   return len(stk)

logs = ["Dir1/","Dir2/","../","Dir2/","Dir3/","./"]
print(solve(logs))

入力

["Dir1/","Dir2/","../","Dir2/","Dir3/","./"]

出力

3

  1. Pythonのサブツリーのノード値の合計から最小値を見つけるプログラム

    すべてのノードに1からnまでの番号が付けられたツリーがあるとします。各ノードには整数値が含まれています。ここで、ツリーからエッジを削除する場合、2つのサブツリーのノード値の合計の差を最小限に抑える必要があります。そのようなサブツリー間の最小の違いを見つけて返す必要があります。ツリーはエッジのコレクションとして提供され、ノードの値も提供されます。 したがって、入力がn =6の場合、edge_list =[[1、2]、[1、3]、[2、4]、[3、5]、[3、6]]、values =[15、 25、15、55、15、65]の場合、出力は0になります。 エッジ(1,2)を削除すると、重みの

  2. Pythonで観覧車からの利益を最大化するために必要な最小回転を見つけるためのプログラム

    4つのキャビンを備えた観覧車があり、各キャビンに4人の乗客を収容できるとします。ホイールは反時計回りに回転し、回転するたびに「実行」の金額がかかります。これで、n個のアイテムを含む配列「cust」ができました。各アイテムiは、i番目の回転の前に観覧車に入るのを待っている人の数を示します。ホイールに乗るには、各顧客が「ボード」の金額を支払う必要があり、その金額は、ホイールを反時計回りに1回転させるためのものです。キャビンに空席がある場合、列に並んで待っている人は待つべきではありません。したがって、データを前提として、利益を最大化するために必要なローテーションの最小量を見つける必要があります。