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

Pythonで衝突した後のロケットの最終状態を見つけるプログラム


numsと呼ばれる数値のリストがあり、それがロケットのサイズと方向を表しているとします。正の整数は右を示し、負の数は左を示します。そして、その数の絶対値はロケットのサイズを表しています。これで、2つのロケットが衝突すると、小さい方のロケットは破壊され、大きい方のロケットはそのまま旅を続けます。同じサイズのロケットで衝突すると、両方とも破壊されます。 2つのロケットが同じ方向に移動しているとき、それらは決して衝突しません(ロケットの速度が同じであると仮定します)。すべての衝突後のロケットの状態を見つける必要があります。

したがって、入力がnums =[3、8、5、-5]の場合、出力は[3、8]になり、5と-5は破棄され、残りは存続します。

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

  • ls:=1つの要素が含まれる新しいリストnums[0]
  • 範囲1からnums-1のサイズのiの場合、do
    • nums [i]> =0の場合、
      • lsの最後にnums[i]を挿入します
    • それ以外の場合、
      • lsの最後にnums[i]を挿入します
      • j:=lsのサイズ-2
      • j>=0およびls[j]>=0の場合、do
        • if|lsの最後の要素|> ls [j]、次に
          • lsからj番目の要素を削除する
        • それ以外の場合|lsの最後の要素| ls [j]と同じで、
          • lsからj番目の要素を削除する
          • lsから最後の要素を削除する
          • ループから抜け出す
        • それ以外の場合、
          • lsから-last要素を削除
          • ループから抜け出す
        • j:=j-1
  • lsを返す

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

class Solution:
   def solve(self, nums):
      ls = [nums[0]]
      for i in range(1, len(nums)):
         if nums[i] >= 0:
            ls.append(nums[i])
         else:
            ls.append(nums[i])
            j = len(ls) - 2
            while j >= 0 and ls[j] >= 0:
               if abs(ls[-1]) > ls[j]:
                  ls.pop(j)
               elif abs(ls[-1]) == ls[j]:
                  ls.pop(j)
                  ls.pop(-1)
                  break
               else:
                  ls.pop(-1)
                  break
               j -= 1
      return ls

ob = Solution()
nums = [3, 8, 5, -5]
print(ob.solve(nums))

入力

[3, 8, 5, -5]

出力

[3, 8]

  1. Pythonでポリゴンの周囲を見つけるプログラム

    順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの周囲を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は16になります。 2つの辺の長さは3で、2つの辺の長さは5なので、2 * 5 + 2 * 3=16です。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です ユークリッド距離である((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))の平方根を返します (x1、y1)

  2. Pythonでマージした後も、最小数の色を見つけるプログラムが残っています

    色のリスト(R、G、B)があるとします。これで、2つの異なる色が隣り合っている場合、それらは3番目の色の単一の色のアイテムに変換できます。そのような変換の可能なシーケンスの後に残っているそれらの最小数を見つける必要があります。 したがって、入力がcolors =[G、 R、 G、 B、 R]の場合、以下のように変換できるため、出力は1になります- これを解決するには、次の手順に従います- n:=色のサイズ 色に異なる色が1つしかない場合は、 return n n <=1の場合、 return n x:=0 d:=キーと値のペアを持つマップ{( R、1)、(