132C++のパターン
n個の整数a1、a2、...、anのシーケンスがあるとします。132パターンは、i
これを解決するには、次の手順に従います-
n:=numsのサイズ。nが0の場合、falseを返します
サイズnのminValsという配列を定義し、minVals [0]:=nums [0]
1からn–1の範囲のIの場合
minVals [i]:=最小のminVals[i-1]とnums[i]
スタックstを作成
n –1から1までの範囲のIの場合
minVal:=minVals [i – 1]
curr:=nums [j]
stが空ではなく、スタックの最上位が<=minVal
スタックstから削除
stが空でなく、スタックの最上位
nums[i]をs
falseを返す
理解を深めるために、次の実装を見てみましょう-
->
例(C ++)
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool find132pattern(vector<int>& nums) {
int n = nums.size();
if(!n) return false;
vector <int> minVals(n);
minVals[0] = nums[0];
for(int i = 1; i < n; i++){
minVals[i] = min(minVals[i - 1], nums[i]);
}
stack <int> s;
for(int i = n - 1; i > 0; i--){
int minVal = minVals[i - 1];
int curr = nums[i];
while(!s.empty() && s.top() <= minVal) s.pop();
if(!s.empty() && s.top() < curr) return true;
s.push(nums[i]);
}
return false;
}
};
main(){
vector<int> v = {-1,3,2,0};
Solution ob;
cout << (ob.find132pattern(v));
}
入力
[-1,3,2,0]
出力
1
-
C++での複合デザインパターン
複合パターンは、オブジェクトのグループを単一のオブジェクトと同じように扱う必要がある場合に使用されます。複合パターンは、階層全体だけでなく一部を表すために、ツリー構造の観点からオブジェクトを構成します。このタイプのデザインパターンは、オブジェクトのグループのツリー構造を作成するため、構造パターンに分類されます。 このパターンは、独自のオブジェクトのグループを含むクラスを作成します。このクラスは、同じオブジェクトのグループを変更する方法を提供します。 組織の従業員階層を示す次の例を使用して、複合パターンの使用を示しています。 ここでは、コンポジットとリーフの両方のクラスがコンポーネン
-
C++シングルトンデザインパターンを説明します。
シングルトンデザインパターンは、クラスのインスタンス化を1つのオブジェクトに制限するために使用されるソフトウェアデザインの原則です。これは、システム全体でアクションを調整するために1つのオブジェクトが必要な場合に役立ちます。たとえば、ログをファイルに書き込むロガーを使用している場合は、シングルトンクラスを使用してそのようなロガーを作成できます。次のコードを使用してシングルトンクラスを作成できます- 例 #include <iostream> using namespace std; class Singleton { static Singleton