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

Pythonで配列が並べ替えられて回転されているかどうかを確認します


n個の一意の値の配列があるとします。この配列がソートされ、反時計回りに回転しているかどうかを確認する必要があります。ここでは、少なくとも1回のローテーションが必要であるため、完全に並べ替えられた配列は、並べ替えられてローテーションされたとは見なされません。

したがって、入力がnums =[4,5,6,8,1,3]の場合、時計回りに2回回転できるため、出力はTrueになり、[1、3、3のように並べ替えられます。 4、5、6、8]。

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

  • min_element:=最小数
  • min_index:=nums単位のmin_elementのインデックス
  • before_sorted:=True
  • 1からmin_index-1までの範囲のiの場合、do
    • nums [i]
    • before_sorted:=False
    • ループから抜け出す
  • after_sorted:=True
  • min_index+1からnums-1のサイズのiの場合はdo
    • nums [i]
    • after_sorted:=False
    • ループから抜け出す
  • before_sortedとafter_sortedがtrueで、nums
  • Trueを返す
  • それ以外の場合、
    • Falseを返す
  • 理解を深めるために、次の実装を見てみましょう-

    def solve(nums):
       min_element = 999999
       min_index = -1
       min_element = min(nums)
       min_index = nums.index(min_element) before_sorted = True
       for i in range(1, min_index):
          if nums[i] < nums[i - 1]:
             before_sorted = False
             break
       after_sorted = True
       for i in range(min_index + 1, len(nums)):
          if nums[i] < nums[i - 1]:
             after_sorted = False
             break
       if before_sorted and after_sorted and nums[-1] < nums[0]:
          return True
       else:
          return False
    nums = [4,5,6,8,1,3]
    print(solve(nums))
    を返す

    入力

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

    出力

    True

    1. リストがPythonでソートされているかどうかを確認します

      リストは、Pythonで最も広く使用されているデータ収集です。指定されたリストがすでにソートされているかどうかを知る必要がある場合に遭遇する可能性があります。この記事では、これを実現するためのアプローチについて説明します。 並べ替えあり 指定されたリストのコピーを取得し、それに並べ替え関数を適用して、そのコピーを新しいリストとして保存します。次に、それを元のリストと比較して、それらが等しいかどうかを確認します。 例 listA = [11,23,42,51,67] #Given list print("Given list : ",listA) listA_copy =

    2. Pythonのa.sort、sorted(a)、np_argsort(a)、np.lexsort(b、a)

      特定の順序でのデータ要素の順序付けは、頻繁に必要な操作です。配列内の要素を並べ替えるために、Pythonはsorted()およびarray.sort()という名前の関数を使用します。 sorted(array) この関数は、元の配列を変更せずに、ソートされた配列を返します。 a = [9,5,3,1,12,6] b = sorted([9,5,3,1,12,6]) print "Sorted Array :\n", print (b) print "Original Array :\n", print (a) 上記のコードを実行すると、次の結果が得