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

C++を使用して配列内の唯一の異なる要素を検索します


この問題では、サイズnのarr[]が与えられます。私たちの仕事はf 配列内の唯一の異なる要素を表示する

配列には2つの異なるタイプの要素しかありません。 1つを除いてすべての要素は同じです。

問題を理解するために例を見てみましょう

入力

arr[] = {1, 1, 1, 2, 1, 1, 1, 1}

出力

2

ソリューションアプローチ

問題を解決するための簡単なアプローチでは、配列をトラバースして、配列の他の要素とは異なる要素を見つける必要があります。このアプローチには、O(N 2 の時間計算量が必要です。 。

O(N)の問題を解決する別のアプローチは、ハッシュテーブルを使用して要素とその出現頻度を格納することです。そして、単一の発生頻度で値を出力します。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
int findDiffElementArray(int arr[], int n){
   if (n == 1)
      return -1;
   if (n == 2)
      return arr[0];
   if (arr[0] == arr[1] && arr[0] != arr[2])
      return arr[2];
   if (arr[0] == arr[2] && arr[0] != arr[1])
      return arr[1];
   if (arr[1] == arr[2] && arr[0] != arr[1])
      return arr[0];
   for (int i = 3; i < n; i++)
      if (arr[i] != arr[i - 1])
         return arr[i];
         return -1;
}
int main(){
   int arr[] = { 5, 5, 1, 5, 5, 5, 5};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The different element in the array is "<<findDiffElementArray(arr, n);
   return 0;
}

出力

The different element in the array is 1

  1. 二分探索アプローチを使用して配列の最小要素を見つけるC++プログラム

    これは、線形探索アプローチを使用して配列の最小要素を見つけるためのC++プログラムです。このプログラムの時間計算量はO(log(n))です。 アルゴリズム Begin Construct binary search tree for the given unsorted data array. To find out the minimum element move the pointer to the leftmost child node. Print this value as minimum value among the given data. End サンプルコー

  2. 線形検索を使用して配列内の最小要素を検索するC++プログラム

    これは、線形探索アプローチを使用して配列の最小要素を見つけるためのC++プログラムです。このプログラムの時間計算量はO(n)です。 アルゴリズム Begin Assign the data element to an array. Assign the value at ‘0’ index to minimum variable. Compare minimum with other data element sequentially. Swap values if minimum value is more then the value at