サイズKで平均がC++のしきい値以上のサブアレイの数
これを解決するには、次の手順に従います-
-
sum:=0、div:=kおよびn:=配列内の要素の数
-
set sum:=arrのすべての要素の合計
-
ret:=0
-
i:=0およびjがkからn– 1の範囲にある場合、iとjの両方を1増やします
-
sum / div> =しきい値の場合、resを1増やします
-
合計をarr[i]
だけ減らします -
合計をarr[j]
増やします
-
-
sum / div> =しきい値の場合、retを1増やします
-
retを返します。
例(C ++)
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; class Solution { public: int numOfSubarrays(vector<int>& arr, int k, int threshold) { double sum = 0; double div = k; int n = arr.size(); for(int i = 0; i < k; i++){ sum += arr[i]; } int ret = 0; for(int i = 0, j = k; j < n; i ++, j++){ if(sum / div >= threshold ){ ret++; } sum -= arr[i]; sum += arr[j]; } if(sum / div >= threshold ){ ret++; } return ret; } }; main(){ vector<int> v = {2,2,2,2,5,5,5,8}; Solution ob; cout << (ob.numOfSubarrays(v, 3, 4)); }
入力
[2,2,2,2,5,5,5,8] 3 4
出力
3
-
C ++を使用して、xとその数字の合計が与えられたnと等しくなるような数xを見つけます。
ここで、1つの問題が発生します。ここで、数値nを取得する場合、x +桁の合計xが指定された数値nと同じになるように、xなどの別の値を見つける必要があります。 nの値が21であると仮定します。このプログラムは、15+桁の合計15、つまり15 + 1 + 5 =21=nとして数値x=15を返します。 この問題を解決するには、単純なアプローチに従う必要があります。 1からnまで繰り返し、各繰り返しで、数値とその桁の合計の合計が数値と同じであるかどうかを確認し、停止します。それ以外の場合は続行します。 例 #include<iostream> using namespace std; i
-
xとその桁の合計がC++で指定されたnと等しくなるような数xを見つけます
ここで、1つの問題が発生します。ここで、数値nを取得する場合、x +桁の合計xが指定された数値nと同じになるように、xなどの別の値を見つける必要があります。 nの値が21であると仮定します。このプログラムは、15+桁の合計15、つまり15 + 1 + 5 =21=nとして数値x=15を返します。 この問題を解決するには、単純なアプローチに従う必要があります。 1からnまで繰り返し、各繰り返しで、数値とその桁の合計の合計が数値と同じであるかどうかを確認し、停止します。それ以外の場合は続行します。 例 #include<iostream> using namespace std; i