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

サイズKで平均がC++のしきい値以上のサブアレイの数


整数arrの配列と2つの整数kおよびしきい値があるとします。サイズがkで、平均がしきい値以上のサブ配列の数を見つける必要があります。したがって、入力が[2,2,2,2,5,5,5,8]で、k =3、しきい値=4の場合、出力は3になります。サブ配列[2,5,5] 、[5,5,5]と[5,5,8]の平均はそれぞれ4、5、6です。

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

  • 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

  1. 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

  2. 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