Pythonのインデックス0から最後の位置に到達できるかどうかを確認するプログラム
numsという数字のリストがあり、各数字はジャンプできる最大数を示しているとします。インデックス0から始まる最後のインデックスに到達できるかどうかを確認する必要があります。
したがって、入力がnums =[2,5,0,2,0]のような場合、インデックス0から1にジャンプしてから、インデックス1から終了にジャンプできるため、出力はTrueになります。
これを解決するために、次の手順に従います-
-
n:=numsのサイズ
-
arr:=サイズnの配列で、falseで埋める
-
arr [n-1]:=True
-
n-2から0の範囲のiの場合、1ずつ減らします。
-
arr [i]:=arr[インデックスi+1からi+nums[i]]のいずれかがtrueの場合はtrue
-
-
arr [0]
を返します
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def solve(self, nums): n = len(nums) arr = [False] * n arr[n - 1] = True for i in range(n - 2, -1, -1): arr[i] = any(arr[i + 1 : i + nums[i] + 1]) return arr[0] ob = Solution() nums = [2,5,0,2,0] print(ob.solve(nums))
入力
[2,5,0,2,0]
出力
True
-
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」と同じ
-
Pythonで最も近い連絡先から少なくともkの距離に立つことができるかどうかを確認するプログラム
文字列sと数値kがあるとします。これで、文字列内の各文字はドット(。)またはxになります。ここで、ドットは空のスペースを示し、xは人を示します。私たちと私たちに最も近い人との間の距離が少なくともkになるように立つ位置を選択できるかどうかを確認する必要があります。 (ここでは、隣接する各インデックス間の距離は1です。) したがって、入力がs =x ... x ..、k =2の場合、s[2]またはs[6]に立つことができるため、出力はTrueになります。 これを解決するには、次の手順に従います- pos:=s内のxの位置、存在しない場合、posは-1になります =kと同じ場合、 Trueを