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

Pythonで車の速度が一定である最長のサブリストのサイズを見つけるプログラム


等間隔の時間間隔での車の位置を表す数字のリストがあるとします。車が一定の速度で走行していた最長のサブリストのサイズを見つける必要があります。

したがって、入力がpositions =[0、4、8、12、6、4、0]のようである場合、サブリストは[0、4、8、12]であるため、出力は4になります。

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

  • j:=1
  • max_cnt:=0、現在:=0
  • 距離:=|位置[0]-位置[1]|
  • j <位置のサイズ、do
    • 前:=位置[j-1]
    • 距離が|positions[j]--prev|と同じ場合、次に
      • 現在:=現在+1
    • それ以外の場合、
      • max_cnt:=max_cntと現在の最大値
      • 現在:=1
      • 距離:=|位置[j]-前へ|
    • max_cnt:=max_cntと現在の最大値
    • j:=j + 1
  • return max_cnt + 1

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

class Solution:
   def solve(self, positions):
      j = 1
      max_cnt = 0
      current = 0
      distance = abs(positions[0] - positions[1])
      while j < len(positions):
         prev = positions[j - 1]
         if distance == abs(positions[j] - prev):
            current += 1

         else:
            max_cnt = max(max_cnt, current)
            current = 1
            distance = abs(positions[j] - prev)
         max_cnt = max(max_cnt, current)
         j += 1
      return max_cnt + 1
ob = Solution()
positions = [0, 4, 8, 12, 6, 4, 0]
print(ob.solve(positions))

入力

[0, 4, 8, 12, 6, 4, 0]

出力

4

  1. グラフ内の最大のクリークの最小サイズを見つけるプログラム(Python)

    グラフが与えられ、グラフ内の最大のクリークの最小サイズを見つけるように求められたとします。グラフのクリークは、頂点のすべてのペアが隣接している、つまり頂点のすべてのペアの間にエッジが存在するグラフのサブセットです。グラフ内で最大のクリークを見つけることは多項式時間では不可能であるため、小さなグラフのノードとエッジの数を考えると、グラフ内の最大のクリークを見つける必要があります。 したがって、入力がノード=4、エッジ=4のような場合。その場合、出力は2になります。 上のグラフでは、クリークの最大サイズは2です。 これを解決するには、次の手順に従います- 関数helper()を定義し

  2. Pythonのグリッドボックスのどこにボールが着地するかを見つけるプログラム

    m x nグリッドボックスが与えられたとします。各セルには、右上から左下、または左上から右下のいずれかに配置されたボードがあります。上のセルからボールがボックスに入れられ、そのボールがボックスの下部に到達するかどうかを確認する必要があります。グリッドはマトリックスとして与えられます。セルに1のマークが付いている場合、対角線上のボードは左上から右下に広がります。 -1とマークされている場合は、右上隅から左下隅にまたがっています。 n個のボールが箱に入れられた場合、底に到達するボールの数を調べる必要があります。 3x3グリッドボックスの例。 したがって、入力がmat =のような場合