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

Pythonで配列を回転させた後、配列を並べ替えることができるかどうかを確認します


numsという数値のリストがあるとすると、ローテーションを使用してnumsを並べ替えることができるかどうかを確認する必要があります。回転することで、いくつかの連続する要素をnumの末尾からシフトして、配列の前に配置できます。

したがって、入力がnums =[4,5,6,1,2,3]のような場合、最後の3つの要素を回転して最初に送り返すことで並べ替えることができるため、出力はTrueになります。

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

  • n:=numsのサイズ
  • numsがソートされている場合、
    • Trueを返す
  • それ以外の場合、
    • status:=True
    • 0からn-2の範囲のiの場合、do
      • nums [i]> nums [i + 1]の場合、
        • ループから抜け出す
    • i:=i + 1
    • iからn-2の範囲のkについては、
      • nums [k]> nums [k + 1]の場合、
        • status:=False
        • ループから抜け出す
    • ステータスがfalseの場合、
      • Falseを返す
    • それ以外の場合、
      • nums [n-1] <=nums [0]の場合、
        • Trueを返す
      • Falseを返す

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

def solve(nums):
   n = len(nums)
   if all(nums[i] <= nums[i + 1] for i in range(len(nums) - 1)):
      return True
   else :
      status = True
      for i in range(n - 1) :
         if nums[i] > nums[i + 1] :
            break
      i += 1
      for k in range(i, n - 1) :
         if nums[k] > nums[k + 1]:
            status = False
            break
      if not status:
         return False
      else :
         if nums[n - 1] <= nums[0]:
            return True
         return False
nums = [4,5,6,1,2,3]
print(solve(nums))

入力

[4,5,6,1,2,3]

出力

True

  1. Pythonで許可されている隣接の条件付きスワッピングで配列をソートできるかどうかを確認します

    numsと呼ばれる順序付けられていない数値の配列があり、すべての要素が0からn-1の範囲にあるとします。隣接する要素を必要な回数だけ交換できますが、これらの要素間の絶対差が1の場合に限ります。numを並べ替えることができるかどうかを確認する必要があります。 したがって、入力がnums =[1、0、3、2、5、4]のような場合、これらのペアを交換できるため、出力はTrueになります[(1、0)、(3、2)、(5 、4)] [0、1、2、3、4、5]を並べ替えます。 これを解決するには、次の手順に従います- 範囲0からnums-2のサイズのiの場合、do nums [i + 1]の場合、

  2. PythonでベクトルAを回転させ、それにベクトルCを追加することで、ベクトルBに到達できるかどうかを確認します。

    2D平面に3つのベクトルx、y、zがあるとします。ベクトルxからベクトルyを90度(時計回り)回転させるか、必要に応じて何度でもzを追加して、ベクトルyを取得できるかどうかを確認する必要があります。 したがって、入力がx =(-4、-2)y =(-1、2)z =(-2、-1)のような場合、位置を取得するためにxにzを追加できるため、出力はTrueになります。 (-2、-1)、次に時計回りに90°回転して(-1、2)を取得します。 これを解決するには、次の手順に従います- 関数util()を定義します。これにはp、q、r、sが必要です d:=r * r + s * s dが0