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

Pythonのキーと部屋


N個の部屋があり、部屋0から開始するとします。各部屋には0、1、2、...、N-1の異なる番号があり、各部屋は次のようになります。次の部屋にアクセスするためのいくつかの鍵を持っています。つまり、各部屋iにはキーrooms [i]のリストがあり、各キーrooms [i] [j]は[0、1、...、N-1]の整数です。ここでN=の数部屋。キーrooms[i][j] =vの場合、番号vで部屋が開きます。したがって、入力が[[1]、[2]、[3]、[]]の場合。その後、出力はtrueになります。覚えておくべき点が他にもいくつかあります-

  • 最初は、すべての部屋がロックされ始めます(部屋0を除く)。
  • 部屋の間を自由に行き来できます。
  • すべての部屋に入ることができる場合にのみ、trueを返す必要があります。

では、部屋0から開始して、キー1を受け取り、次に部屋1に移動し、2のキーを取得し、2のフォームを作成し、3を訪問した後、3のキーを取得します。訪問してからtrueを返します。

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

  • 空のキューを1つ作成し、すべての部屋の訪問済み配列を作成して、falseに設定します
  • queue:=addRooms(rooms、0、queue、visited)
  • visited [0]:=Ture
  • キューにはいくつかの要素があります
    • queue:=addRooms(rooms、queue [0]、queue、visited)
    • visited[queue[0]]をtrueとしてマークします
    • キューから要素を削除します
  • 訪問した配列のすべての要素がtrueの場合、trueを返します
  • addRoom()は、ルーム、インデックス、キュー、および訪問済み配列を取得します。これは次のようになります
  • for i in Rooms [index] array
    • iにアクセスしていない場合は、iをキューに挿入します
  • キューを返す
例(Python)

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

class Solution(object):
   def canVisitAllRooms(self, rooms):
      queue = []
      visited = [False for i in rooms]
      queue = self.add_rooms(rooms,0,queue,visited)
      visited[0] = True
      while len(queue)>0:
         queue = self.add_rooms(rooms,queue[0],queue,visited)
         visited[queue[0]] = True
         queue.pop(0)
      return all(visited)
   def add_rooms(self, rooms,index,queue,visited):
      for i in rooms[index]:
         if not visited[i]:
            queue.append(i)
      return queue
ob1 = Solution()
print(ob1.canVisitAllRooms([[1],[2],[3],[]]))

入力

[[1],[2],[3],[]]
出力
true

  1. =+と+=はPythonで何をしますか?

    + =演算子は、object .__ iadd __()関数のシンタックスシュガーです。 Pythonドキュメントから: これらのメソッドは、拡張された算術割り当て(+ =、-=、* =、@ =、/ =、// =、%=、** =、)を実装するために呼び出されます。 =、&=、^ =、| =)。これらのメソッドは、その場で操作を実行し(自己を変更)、結果を返すようにする必要があります(自己である可能性がありますが、そうである必要はありません)。 例 だからあなたが次のようなことをするとき- a = 5 b = 10 a += b print(a) 出力 これにより、出力が得られます- 15

  2. キーと値のリストからPython辞書を作成するにはどうすればよいですか?

    L1とL2がキーとそれぞれの値を含むリストオブジェクトである場合、次のメソッドを使用して辞書オブジェクトを作成できます。 2つのリストを圧縮し、dict()関数を使用して辞書に変換します >>> L1 = [a,b,c,d] >>> L2 = [1,2,3,4] >>> d = dict(zip(L1,L2)) >>> d {a: 1, b: 2, c: 3, d: 4} 辞書理解構文の使用 >>> L1 = [a,b,c,d] >>> L2 = [1,2,3,4] >&