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

与えられたリストにピタゴラストリプレットがあるかどうかをPythonでチェックするプログラム


numsという数字のリストがあるとすると、a ^ 2 + b ^ 2 =c ^ 2となるような3つの数字a、b、cが存在するかどうかを確認する必要があります。

したがって、入力が[10、2、8、5、6]の場合、出力はTrueになり、8 ^ 2 + 6 ^ 2 =64 + 36 =100 =10^2となります。

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

  • tmp:=numsのすべての数値の降順の2乗のリスト
  • tmp内の各インデックスiおよび対応する番号nについて、実行します
    • ベース:=n
    • 左:=i + 1、右:=tmp-1のサイズ
    • 左<=右、実行
      • t:=2つのリストtmp[left]とtmp[right]を結合します
      • tがbaseと同じ場合、
        • Trueを返す
      • それ以外の場合、t>ベースの場合、
        • 左:=左+ 1
      • それ以外の場合、
        • right:=right-1
  • Falseを返す

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

class Solution:
   def solve(self, nums):
      tmp = sorted([n*n for n in nums], reverse = True)
      for i, n in enumerate(tmp):
         base = n
         left = i+1; right = len(tmp)-1
         while left <= right:
            t = tmp[left]+tmp[right]
            if t == base:
               return True
            elif t > base:
               left += 1
            else:
               right -= 1
      return False
ob = Solution()
print(ob.solve([10, 2, 8, 5, 6]))

入力

[10, 2, 8, 5, 6]

出力

True

  1. 文字列が空かどうかをチェックするPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 文字列を入力したら、文字列が空かどうかを確認する必要があります。 Python文字列は本質的に不変であるため、操作を実行するときは、文字列を処理するときに注意が必要です。 ここでは、上記の問題ステートメントを解決するための2つのアプローチについて説明します- len()メソッドを使用します。 等式演算子を使用します。 アプローチ1:len()メソッドを使用する 例 test_str1 = "" test_str2 = "@@@" if(l

  2. 指定された文字列がパングラムであるかどうかを確認するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 文字列入力が与えられた場合、その文字列がパングラムであるかどうかを確認するPythonプログラムを生成する必要があります。 パングラムは、英語のアルファベットコレクションのすべての文字を含む文/一連の単語です。 では、問題を解決する方法を見てみましょう 入力文字列に存在する各文字が、手動で宣言するアルファベットセットに属しているかどうかをチェックするループを使用します。 上記のアプローチの実装は、-によって与えられます。 例 import string def ispangram