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

Pythonで配列要素が連続しているかどうかを確認します


numsと呼ばれる数値の配列があるとします。連続した値が含まれているかどうかを確認する必要があります。

したがって、入力がnums =[6、8、3、5、4、7]のような場合、要素は3、4、5、6、7、8であるため、出力はtrueになります。

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

  • numsのサイズが1未満の場合、
    • Falseを返す
  • min_val:=最小数、max_val:=最大数
  • (max_val --min_val + 1)がnumsのサイズと同じである場合、
    • 0からnumsのサイズの範囲のiの場合は、
      • nums [i] <0の場合、
        • j:=-nums [i] --min_val
      • それ以外の場合、
        • j:=nums [i] --min_val
      • nums [j]> 0の場合、
        • nums [j]:=-nums [j]
      • それ以外の場合、
        • Falseを返す
    • Trueを返す
  • Falseを返す

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

def solve(nums):
   if len(nums) < 1:
      return False
   min_val = min(nums)
   max_val = max(nums)
   if max_val - min_val + 1 == len(nums):
      for i in range(len(nums)):
         if nums[i] < 0:
            j = -nums[i] - min_val
         else:
            j = nums[i] - min_val
            if nums[j] > 0:
               nums[j] = -nums[j]
            else:
               return False
      return True
   return False
nums = [6, 8, 3, 5, 4, 7]
print(solve(nums))

入力

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

出力

True

  1. 要素を減らしてPythonで配列をジグザグにする

    整数の配列numsがあるとすると、移動操作は実際に任意の要素を選択し、それを1ずつ減らします。1または2のいずれかが満たされる場合、配列Aはジグザグ配列です- A [1] A [3] ...など。 すべての奇数インデックスの要素は、隣接する要素よりも大きいので、そうです。 A [0] A [2] A[4]<...など。 与えられた配列番号をジグザグ配列に変換するための最小移動数を見つける必要があります。 したがって、配列が[1,2,3]のような場合、出力は2になります。これは、2を0または3を1に減らすことができるためです。 これを解決するには、次の手順に従います-

  2. Pythonでの等しい配列要素IIへの最小移動

    空でない整数配列があるとすると、すべての配列要素を等しくするために必要な最小移動数を見つける必要があります。ここで、移動は選択した要素をインクリメントまたはデクリメントします。したがって、配列が[1、2、3]の場合、出力は2になり、1は2にインクリメントされ、3は2にデクリメントされます。 これを解決するには、次の手順に従います- 配列番号を並べ替える カウンターを0に設定 numsのiの場合は、 カウンター:=カウンター+絶対値(i – nums[numsの長さ/2]) リターンカウンター 例(Python) 理解を深めるために、次の実装を見てみましょう- class Solut