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

Pythonでヒープが最大ヒープを形成しているかどうかを確認するプログラム


ヒープツリーを表すリストがあるとします。私たちが知っているように、ヒープは完全な二分木です。要素が最大ヒープを形成しているかどうかを確認する必要があります。最大ヒープについて知っているように、すべての要素はその子の両方よりも大きくなります。

したがって、入力がnums =[8、6、4、2、0、3]のような場合、すべての要素が子よりも大きいため、出力はTrueになります。

Pythonでヒープが最大ヒープを形成しているかどうかを確認するプログラム

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

  • n:=numsのサイズ
  • 0からn-1の範囲のiの場合、do
    • m:=i * 2
    • num:=nums [i]
    • m + 1
    • num
    • Falseを返す
  • m + 2
  • num
  • Falseを返す
  • Trueを返す
  • 理解を深めるために、次の実装を見てみましょう-

    def solve(nums):
       n = len(nums)
       for i in range(n):
          m = i * 2
          num = nums[i]
          if m + 1 < n:
             if num < nums[m + 1]:
                return False
          if m + 2 < n:
             if num < nums[m + 2]:
                return False
       return True
    
    nums = [8, 6, 4, 2, 0, 3]
    print(solve(nums))
    を返します

    入力

    [8, 6, 4, 2, 0, 3]

    出力

    True

    1. ポイントをチェックするプログラムがPythonで凸包を形成しているかどうか

      ポリゴンの外側の点が時計回りにあるとします。これらの点が凸包を形成しているかどうかを確認する必要があります。 この図から、3つの連続するポイントごとに内角が180°以下であることが明らかです。したがって、すべての角度が180°以下の場合、ポリゴンは凸包になります。 したがって、入力がpoints =[(3,4)、(4,7)、(7,8)、(11,6)、(12,3)、(10,1)、(5,2 )]の場合、出力はTrueになります。 これを解決するには、次の手順に従います- n:=ポイントのサイズ 0からポイントのサイズまでの範囲のiについては、 1の場合はpoints[i-2]、

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

      この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数値が与えられているので、その数値が2の累乗であるかどうかを確認する必要があります。 キーワードは、特定の用途で任意の言語によって予約されている特別な単語であり、識別子として使用することはできません。 指定された文字列がキーワードであるかどうかを確認するために、以下で説明するようにキーワードモジュールを使用しました。 例 # keyword module import keyword # Function def isKeyword(word) :    # list of all