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

Pythonで配列要素がO(n)時間とO(1)空間で連続しているかどうかを確認します(正の数と負の数の両方を処理します)


numsと呼ばれるソートされていない数値の配列があるとします。連続した値が含まれているかどうかを確認する必要があります。負の数もサポートする必要があります。

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

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

  • size:=numsのサイズ
  • init_term:=inf
  • 0からサイズの範囲のiの場合は、
    • nums [i]
    • init_term:=nums [i]
  • ap_sum:=((size *(2 * init_term +(size-1)* 1))/ 2)の商
  • total:=numsのすべての要素の合計
  • ap_sumがtotalと同じ場合はtrueを返し、それ以外の場合はfalseを返します
  • 理解を深めるために、次の実装を見てみましょう-

    def solve(nums):
       size = len(nums)
       init_term = 999999
       for i in range(size):
          if nums[i] < init_term:
             init_term = nums[i]
       ap_sum = (size * (2 * init_term + (size - 1) * 1)) // 2
       total = sum(nums)
       return ap_sum == total
    nums = [-3, 5, 1, -2, -1, 0, 2, 4, 3] 
    print(solve(nums))

    入力

    [-3, 5, 1, -2, -1, 0, 2, 4, 3]

    出力

    True

    1. Pythonプログラムのリストで正と負の数を数える

      この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −反復可能なリストが与えられているので、その中の正と負の数を数えて表示する必要があります。 アプローチ1-反復構成(for)を使用したブルートフォースアプローチ =0であるかどうかを確認して、正の数をフィルター処理する必要があります。条件がtrueと評価された場合は、pos_countを増やし、そうでない場合は、neg_countを増やします。 例 list1 = [1,-2,-4,6,7,-23,45,-0] pos_count, neg_count = 0, 0 # enhanced for loop

    2. 正の数と負の数を再配置するPythonのLambda式

      この記事では、正と負の整数の入力配列を受け取るラムダ式の使用について学習します。 1つは負の数を含み、もう1つは正の数を含む2つの別々の配列を計算します。 ここでは、1つの引数、つまり整数の配列のみを受け入れるRearrange()関数を定義します。この関数は、配列の異なる側で各タイプとマージされた両方の配列を返します。 それでは、コードを見て理解を深めましょう。 例 def Rearrange(arr): # First lambda expression returns a list of negative numbers in arr. # Second lambda express