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

指定された製品のサブ配列がPythonの配列に存在するかどうかを確認します


numsという配列があり、これに正の数と負の数が含まれているとします。別の値kがあります。積がkであるサブ配列が配列に存在するかどうかを確認する必要があります。

したがって、入力がnums =[-2、-1,1,3,5,8]、k =6のような場合、サブ配列は[-2、-1,3]

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

  • 最小:=nums [0]、最大:=nums [0]
  • prod_max:=nums [0]
  • 範囲1からnums-1のサイズのiの場合、do
    • nums [i] <0の場合、
      • 最大値と最小値を入れ替える
    • maximum:=最大nums [i]および(maximum * nums [i])
    • 最小:=最小nums [i]および(最小* nums [i])
    • 最小値または最大値のいずれかがkと同じである場合、
      • Trueを返す
    • prod_max:=prod_maxの最大値と最大値
  • Falseを返す

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

サンプルコード

def solve(nums, k):
   minimum = nums[0]
   maximum = nums[0]
 
   prod_max = nums[0]
 
   for i in range( 1, len(nums)):
      if nums[i] < 0:
         maximum, minimum = minimum, maximum

      maximum = max(nums[i], maximum * nums[i])
      minimum = min(nums[i], minimum * nums[i])

      if minimum == k or maximum == k:
         return True
 
      prod_max = max(prod_max, maximum)
   return False

nums = [-2,-1,1,3,5,8]
k = 6
print(solve(nums, k))

入力

[-2,-1,1,3,5,8], 6

出力

True

  1. 与えられた合計のトリプレットがPythonのBSTに存在するかどうかを確認します

    整数値と数値「合計」を含む二分探索木(BST)が提供されているとします。提供されたBSTに、3つの要素の加算が提供された「合計」値に等しい、3つの要素のグループがあるかどうかを確認する必要があります。 したがって、入力が次のような場合 total =12の場合、出力はTrueになります。 これを解決するには、次の手順に従います- temp_list:=ゼロで初期化された新しいリスト ツリーを順番にトラバースしてtemp_listに配置します 0から(temp_listのサイズ-2)の範囲のiの場合、1ずつ増やします。 左:=i + 1 right:=temp_listのサ

  2. 特定のキーがPythonディクショナリにすでに存在するかどうかを確認するにはどうすればよいですか?

    のメンバーシップ演算子は辞書オブジェクトでも使用できます >>> d1={1:'aaa',2:'bbb',3:"ccc",4:'ddd',5:'eee'} >>> 3 in d1 True >>> 9 in d1 False さらに、keys()メソッドは、ディクショナリ内のキーのビューオブジェクトを返します。のメンバーシップ演算子は、キーが存在するかどうかも通知します >>> 3 in d1.keys() True