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

指定された整数配列のすべての異なる要素をC++で出力します


この問題では、整数値の配列が与えられます。私たちのタスクは、配列のすべての異なる要素を出力することです。出力には、個別の値のみが含まれている必要があります。

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

Input: array = {1, 5, 7, 12, 1, 6, 10, 7, 5}
Output: 1 5 7 12 6 10

この問題を解決するには、配列の要素の一意性を確認する必要があります。このために、2つのネストされたループを使用します。外側のループは値を取り、内側のループは残りの値をチェックします。複数の値が終了する場合は、1つだけを出力します。

このコードは、ソリューションの実装を示しています。

#include <iostream>
using namespace std;
void printDistinctValues(int arr[], int n) {
   for (int i=0; i<n; i++){
      int j;
      for (j=0; j<i; j++)
      if (arr[i] == arr[j])
         break;
      if (i == j)
         cout<<arr[i]<<"\t";
   }
}
int main(){
   int arr[] = {1, 5, 7, 12, 1, 6, 10, 7, 5};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout<<"Distinct values of the array are :\n";
   printDistinctValues(arr, n);
   return 0;
}
出力
Distinct elements of the array are −
1 5 6 7 10 12

このソリューションは簡単ですが、2つのループを使用するため、n 2 のオーダーが複雑になります。 。

より複雑な方法は、並べ替えを使用することです。ソートされた配列では、類似した番号の出現が連続します。これで、個別の要素を簡単に印刷でき、スペースも少なくて済みます。

ロジックの実装-

#include <bits/stdc++.h>
using namespace std;
void printDistinctElements(int arr[], int n){
   sort(arr, arr + n);
   for (int i=0; i<n; i++){
      while (i < n-1 && arr[i] == arr[i+1])
         i++;
      cout<<arr[i]<<"\t";
   }
}
int main(){
   int arr[] = {1, 5, 7, 12, 1, 6, 10, 7, 5};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout<<"Distinct elements of the array are :\n";
   printDistinctElements(arr, n);
   return 0;
}
出力
Distinct elements of the array are −
1 5 6 7 10 12

もう1つのより効果的な解決策は、アレイの訪問した要素を追跡することです。配列をトラバースし、配列のすべての訪問済み要素を追跡します。

このコードは、ソリューションの実装を示しています。

#include<bits/stdc++.h>
using namespace std;
void printDistinctElements(int arr[],int n) {
   unordered_set<int> visited;
   for (int i=0; i<n; i++){
      if (visited.find(arr[i])==visited.end()){
         visited.insert(arr[i]);
         cout<<arr[i]<<"\t";
      }
   }
}
int main () {
   int arr[] = {1, 5, 7, 12, 1, 6, 10, 7, 5};
   int n=7;
   cout<<"Distinct numbers of the array are :\n";
   printDistinctElements(arr,n);
   return 0;
}
出力
Distinct numbers of the array are −
1 5 7 12 6 10

  1. 特定のソースから宛先までのすべてのパスをC++で出力します

    この問題では、有向グラフが与えられ、グラフのソースから宛先までのすべてのパスを印刷する必要があります。 有向グラフ は、頂点aからbに向けられたエッジを持つグラフです。 問題を理解するために例を見てみましょう ソース=K宛先=P 出力: K -> T -> Y -> A -> P K -> T -> Y -> P K -> A -> P ここで、KからPへのパスを見つけました。パスをトラバースし、KからPに向かうすべてのパスを出力しました。 この問題を解決するために、深さ優先探索を使用してグラフをトラバースします。

  2. 指定された整数配列のすべての個別の要素を出力するPythonプログラム。

    与えられた整数配列。配列の要素が重複している可能性があります。私たちのタスクは、個別の値を表示することです。 例 Input::A=[1,2,3,4,2,3,5,6] Output [1,2,3,4,5,6] アルゴリズム Step 1: input Array element. Step 2: Then pick all the elements one by one. Step 3: then check if the picked element is already displayed or not. Step 4: use one flag variable which i