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

Pythonでの毎日の気温


毎日の気温Tのリストがあるとすると、入力の1日ごとに、気温が高くなるまで何日待つ必要があるかを示すリストを返す必要があります。 。これが可能な将来の日がない場合は、代わりに0を格納します。たとえば、T =[73、74、75、71、69、72、76、73]の場合、出力は[1、1、4、2、1、1、0、0]になります。

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

  • ans:=Tと同じサイズの配列で、これを0で埋めます
  • 1つのスタックを定義し、スタックに0を挿入し、i:=1
  • whilei
  • スタック要素数が0ではなく、T [i]>T[スタックトップ要素]
    • index:=スタックトップ要素
    • ans [index]:=i –インデックス
    • スタックから最上位の要素を削除する
  • スタックの長さが0またはT[i]<=T[スタックトップ要素]
      の場合
    • iをスタックに挿入
  • iを1増やします
  • 回答を返す
  • 例(Python)

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

    class Solution(object):
       def dailyTemperatures(self, T):
          ans = [0 for i in range(len(T))]
          stack = []
          stack.append(0)
          i=1
          while i <len(T):
             while len(stack) and T[i]>T[stack[-1]]:
                index = stack[-1]
                ans[index] = i-index
                stack.pop()
             if not len(stack) or T[i]<=T[stack[-1]]:
                stack.append(i)
             i+=1
          return ans
    ob1 = Solution()
    print(ob1.dailyTemperatures([73,74,75,71,69,72,76,73]))

    入力

    [73,74,75,71,69,72,76,73]

    出力

    [1, 1, 4, 2, 1, 1, 0, 0]

    1. Pythonでの二分木順序トラバーサル

      二分木があるとします。再帰を使用せずに、順序どおりのトラバーサルスキームを使用してこのツリーをトラバースする必要があります。したがって、ツリーが次のような場合 その場合、トラバーサルは[2,5,7,10,15,20]になります。 これを解決するには、次の手順に従います- 2つの配列resとスタックを作成し、curr:=rootを設定します 1つの無限ループを実行します 現在がnullではない場合 currをスタックにプッシュし、curr:=currの左側に設定します スタックの長さが0の場合、resを返します node:=スタックからポップされた要素 ノードの値をresに

    2. Pythonでのスタックおよびキューとしてのリストの使用

      この記事では、Python3.xのスタックとキューの構造について学習します。またはそれ以前。ここでは、これらのデータ構造内での動作と変更について説明します- これには-が含まれます 挿入操作(プッシュ、エンキュー) 削除操作(ポップ、デキュー) 表示/トラバース操作 前提条件 :リストとリスト操作 関連データ構造 :リスト操作 関連画像 スタック スタックでは、オブジェクトは互いに重ねて格納され、これらのオブジェクトは到着の逆の順序で削除されます。つまり、LIFOの概念に従います。 LIFOは、スタックデータ構造で後入れ先出しタイプの配置に従うことを意味します。 スタックで