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

Pythonのヒストグラムの下で最大の長方形の領域を見つけるプログラム


ヒストグラムの棒の高さを表す数値のリストがあるとします。バーの下に形成できる最大の長方形の領域を見つける必要があります。

したがって、入力がnums =[3、2、5、7]

のような場合

Pythonのヒストグラムの下で最大の長方形の領域を見つけるプログラム

その場合、出力は10になります

Pythonのヒストグラムの下で最大の長方形の領域を見つけるプログラム

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

  • stk:=スタックで、最初に-1を挿入します
  • 高さの最後に0を挿入
  • ans:=0
  • 0から高さのサイズまでの範囲のiについては、
    • heights [i]
    • h:=heights [top of stk] and pop from stk
    • w:=i-stkのトップ-1
    • ans:=ansの最大値と(h * w)
  • 私をstkに押し込む
  • 回答を返す
  • 理解を深めるために、次の実装を見てみましょう-

    class Solution:
       def solve(self, heights):
          stk = [-1]
          heights.append(0)
          ans = 0
          for i in range(len(heights)):
             while heights[i] < heights[stk[-1]]:
                h = heights[stk.pop()]
                w = i - stk[-1] - 1
                ans = max(ans, h * w)
             stk.append(i)
          return ans
    
    ob = Solution()
    nums = [3, 2, 5, 7]
    print(ob.solve(nums))

    入力

    [3, 2, 5, 7]

    出力

    10

    1. 配列内の最大の要素を見つけるPythonプログラム

      この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、配列の最大要素を計算する必要があります。 ここでは、ループ全体をトラバースして最大の要素を計算し、要素を取得するブルートフォースアプローチを使用します。 以下の実装を観察できます。 例 # largest function def largest(arr,n):    #maximum element    max = arr[0]    # traverse the whole loop    for

    2. 配列内の最大の要素を見つけるPythonプログラム

      この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n):    #maximal element