Pythonのヒストグラムの下で最大の長方形の領域を見つけるプログラム
ヒストグラムの棒の高さを表す数値のリストがあるとします。バーの下に形成できる最大の長方形の領域を見つける必要があります。
したがって、入力がnums =[3、2、5、7]
のような場合
その場合、出力は10になります
これを解決するには、次の手順に従います-
- 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)
- heights [i]
- 私を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
-
配列内の最大の要素を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、配列の最大要素を計算する必要があります。 ここでは、ループ全体をトラバースして最大の要素を計算し、要素を取得するブルートフォースアプローチを使用します。 以下の実装を観察できます。 例 # largest function def largest(arr,n): #maximum element max = arr[0] # traverse the whole loop for
-
配列内の最大の要素を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n): #maximal element