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

C ++のソートされた配列の絶対的な個別のカウント?


配列は、同じデータ型の要素のコレクションです。 ソートされた配列 は、昇順または降順の順序で要素が格納されている配列です。

明確な数は、同じではない要素の数です。

絶対個別カウントは、要素の絶対値、つまり符号のない要素(符号なしの値)の個別カウントです。

このプログラムでは、ソートされた配列で絶対的な個別のカウントを見つけます。つまり、配列の各要素の絶対値を考慮した場合、個別の値の数をカウントします。

たとえば、

Input : [-3 , 0 , 3 , 6 ]
Output : 3

配列には3つの異なる絶対値があり、要素は0、3、および6です。

これを解決するために、さまざまな方法を使用する方法があります。

セットを使用して

セットには常に個別の要素が含まれます。そのため、セット内の絶対値をチェックし、絶対値が使用できない場合は、いつ要素をセットに追加するかを確認します。セットのサイズを返します。

アルゴリズム-
  • 配列と同じデータ型のセットを作成します。

  • 各要素の絶対値を見つけて、要素を配列に格納します。複数の値が検出された場合でも、セットは1つの単一の値を格納します。

  • すべての要素が入力された後。セットの長さを返します。これにより、個別の要素の数が配列になります。

#include <bits/stdc++.h>
using namespace std;
int main() {
   int arr[] = {-3, 0, 2, 6};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "Count of absolute distinct values : ";
   unordered_set<int> s;
   for (int i = 0 ; i < n; i++)
      s.insert(abs(arr[i]));
      int nof = s.size();
      cout<<nof;
      return 0;
}
出力
Count of absolute distinct values : 4
配列チェックとカウント変数の使用

このメソッドは、セットではなく単一の変数のみを使用します。配列の個別の要素をカウントするためのカウント変数を提供します。

#include <iostream>
using namespace std;
int main() {
   int arr[] = {-5, -1, 0, 5, 8};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "Count of absolute distinct values : ";
   int count = n;
   int i = 0, j = n - 1, sum = 0;
   while (i < j) {
      while (i != j && arr[i] == arr[i + 1])
         count--, i++;
      while (i != j && arr[j] == arr[j - 1])
         count--, j--;
      if (i == j)
         break;
      sum = arr[i] + arr[j];
      if (sum == 0) {
         count--;
         i++, j--;
      }
      else if(sum < 0)
         i++;
      else
         j--;
   }
   cout<< count;
   return 0;
}
出力
Count of absolute distinct values : 4

  1. C++のRotatedSorted配列でRotationCountを検索します

    回転してソートされた配列である配列があるとします。配列をソートするために必要な回転数を見つける必要があります。 (右から左への回転を検討します。) 配列が{15、17、1、2、6、11}のようであるとすると、配列を2回回転させて並べ替える必要があります。最終的な注文は{1、2、6、11、15、17}になります。ここでの出力は2です。 ロジックは単純です。気づいたら、回転数が最小要素のインデックスの値と同じであることがわかります。したがって、最小の要素を取得すると、そのインデックスが結果になります。 例 #include <iostream> using namespace st

  2. ソートされた配列を実装するC++プログラム

    並べ替えられた配列は、各要素が数値、アルファベット順などの順序で並べ替えられた配列です。バブルの並べ替え、挿入の並べ替え、選択の並べ替え、マージの並べ替え、クイック並べ替えなど、数値の配列を並べ替えるアルゴリズムは多数あります。ヒープソートなど。選択ソートを使用した配列のソートの詳細については、以下を参照してください。 選択ソートは、ソートされた配列を生成するソート方法です。これは、配列内の最小の要素を繰り返し見つけて、ソートされていない部分の先頭にある要素と交換することによって行われます。 選択ソートを使用してソートされた配列を実装するプログラムは次のとおりです。 例 #include&