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

Pythonでkから開始して、リストの最後に到達できることを確認するプログラム


numsと呼ばれる数のリストと別の数kがあるとします。インデックスkと任意のインデックスiから開始する場合、正確にnums[i]ステップ数だけ左または右に進むことができます。リストの最後に到達できるかどうかを確認する必要があります。

したがって、入力がnums =[0、0、2、1、3、3、1、1] k =2の場合、インデックス2から開始してから、インデックス4にジャンプするかのように、出力はTrueになります。次に、最後のインデックス7にジャンプします。

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

  • n:=numsのサイズ

  • 訪問:=サイズnのリストで0を入力

  • tovisit:=サイズ1のリストで、それにkを挿入します

  • tovisitのサイズが<0の場合、実行

    • i:=tovisitの最後の要素とtovisitから削除

    • iがn-1と同じ場合、

    • Trueを返す

  • visited [i]が1と同じでない場合、

    • 訪問済み[i]:=1

    • up:=i + nums [i]

    • down:=i --nums [i]

    • up

    • tovisitの最後に挿入

    • ダウン>=0の場合、

    • tovisitの最後に挿入します

  • Falseを返す

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

class Solution:
   def solve(self, nums, k):
      n=len(nums)
      visited = [0]*n
      tovisit = [k]
      while len(tovisit)>0:
         i=tovisit.pop()
         if i==n-1:
            return True
         if visited[i]!=1:
            visited[i]=1
            up=i+nums[i]
            dn=i-nums[i]
         if up=0:
            tovisit.append(dn)
      return False
ob = Solution()
nums = [0, 0, 2, 1, 3, 3, 1, 1]
k = 2
print(ob.solve(nums, k))

入力

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

出力

True

  1. Pythonで訪問した場所を移動し続けることでロボットが目標に到達できることを確認するプログラム

    現在、位置(0、0)(デカルト平面)に座っているロボットがあるとします。 N(北)、S(南)、W(西)、E(東)を含む、移動可能な移動のリストがある場合。ただし、ロボットが以前の場所に到達した場合、ロボットは新しい未訪問の場所に到達するまで同じ方向に移動し続けます。移動後、(x、y)座標で終了するかどうかを確認する必要があります。 したがって、入力が次のような場合 move =[N、N、E、N、W、S]、coord =[0、-1]の場合、ロボットは2つ進むため、出力はTrueになります。上、右、上、左、下、現在の位置にアクセスすると下に移動し、次にその場所にもアクセスし、再び下に移動

  2. Pythonでロボットが目標位置に到達できるかどうかをチェックするプログラム

    現在、位置(0、0)(デカルト平面)に座っているロボットがあるとします。 N(北)、S(南)、W(西)、およびE(東)を含む、実行可能な移動のリストがある場合。宛先座標(x、y)に到達できるかどうかを確認する必要があります。 したがって、入力がmoves =[N、N、E、E、S]、(x、y)=(2,1)のような場合、出力はTrueになります。 これを解決するには、次の手順に従います- temp_coord:=[0,0] 移動の移動ごとに、 移動が「N」と同じ場合、 temp_coord [1]:=temp_coord [1] + 1 それ以外の場合、移動が「S」と同じ