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

C++の特定のサブアレイ内の特定の数以下の要素の数


番号とサブ配列の下限と上限のインデックスが与えられます。指定された数以下の要素の数を数える必要があります。例を見てみましょう。

入力

arr = [1, 2, 3, 4, 5, 6, 7, 8]
k = 4
lower = 0
upper = 5

出力

4

インデックス0と5の間には、4以下の4つの要素があります。

アルゴリズム

  • 配列、番号、およびサブ配列のインデックスを初期化します。

  • カウントを0に初期化します。

  • サブアレイの下位インデックスからサブアレイの上位インデックスまで反復するループを記述します。

    • 現在の要素が指定された数以下の場合は、カウントを増やします。

  • カウントを返します。

実装

以下は、C++での上記のアルゴリズムの実装です

#include <bits/stdc++.h>
using namespace std;
int getElementsCount(int arr[], int n, int lower, int upper, int k) {
   if (lower < 0 || upper >= n || lower > upper) {
      return 0;
   }
   int count = 0;
   for (int i = lower; i <= upper; i++) {
      if (arr[i] <= k) {
         count += 1;
      }
   }
   return count;
}
int main() {
   int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
   int n = 8, k = 4;
   cout << getElementsCount(arr, n, 0, 3, k) << endl;
   cout << getElementsCount(arr, n, 4, 7, k) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

4
0

  1. C++で絶対差が1以下になるような要素の最大数を見つけます

    n個の要素の配列があるとします。配列から選択する要素の最大数を見つけて、選択した要素の任意の2つの間の絶対差が1以下になるようにする必要があります。したがって、配列が[2、2、3、4、 5]の場合、要素は3になるため、最大カウントのシーケンスは2、2、3になります。 0と1の絶対差は、数値がx型とx + 1型である可能性があることを意味します。したがって、配列要素の頻度を格納するという考え方です。したがって、2つの連続する要素の最大合計が見つかった場合、それが解決策になります。 例 #include <iostream> #include <map> using na

  2. C++で指定された数以下の最大の特殊素数を検索します

    数nがあるとします。 N以下の最大の特別な素数を見つける必要があります。特別な素数は数字であり、数字を次々に配置することで作成できるため、結果の数字はすべて素数になります。 ここでは、エラトステネスのふるいを使用します。数nまでのふるい配列を作成します。次に、数が素数であるかどうかを確認することにより、数Nから繰り返し開始します。これが素数の場合、これが特別な素数であるかどうかを確認します。 例 #include<iostream> using namespace std; bool isSpecialPrime(bool sieve[], int num) {   &