重複する要素の左側のオカレンスを削除した後に配列を検索するC++プログラム
n個の要素を持つ配列Aがあるとします。重複する要素を削除したいと思います。配列の各要素の右端のエントリのみを残します。残りの一意の要素の相対的な順序は変更しないでください。
したがって、入力がA =[1、5、5、1、6、1]の場合、出力は[5、6、1]
になります。ステップ
これを解決するには、次の手順に従います-
Define two arrays b and vis of size: 1200 each x := 0 n := size of A for initialize i := n - 1, when i >= 0, update (decrease i by 1), do: if vis[A[i]] is zero, then: b[x] := A[i] (increase x by 1) vis[A[i]] := 1 for initialize i := x - 1, when i >= 0, update (decrease i by 1), do: print b[i]
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; void solve(vector<int> A) { int b[1200], vis[1200], x = 0; int n = A.size(); for (int i = n - 1; i >= 0; i--) { if (!vis[A[i]]) { b[x] = A[i]; x++; vis[A[i]] = 1; } } for (int i = x - 1; i >= 0; i--) cout << b[i] << ", "; } int main() { vector<int> A = { 1, 5, 5, 1, 6, 1 }; solve(A); }
入力
{ 1, 5, 5, 1, 6, 1 }
出力
5, 6, 1,
-
C++で元の順序で配列のk個の最大要素を検索します
この問題では、n個の要素の配列arr[]が与えられます。私たちのタスクは、元の順序で配列のk個の最大要素を見つけることです。 配列の最大k個の要素を見つけて、最初にインデックスが付けられたとおりに出力する必要があります。 問題を理解するために例を見てみましょう 入力: arr [] ={5、1、3、6、2}、k =2 出力: 5、6 説明: 配列の最大の2つの要素は6と5です。ただし、元の配列では5が6の前に来るため、そのように印刷しました。 ソリューションアプローチ 問題を解決するには、k個の要素を元の順序で印刷します。 このために、arr[]の要素を降順で格納す
-
配列要素の乗算のためのC++プログラム
整数要素の配列で与えられ、タスクは配列の要素を乗算して表示することです。 例 Input-: arr[]={1,2,3,4,5,6,7} Output-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 Input-: arr[]={3, 4,6, 2, 7, 8, 4} Output-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 以下のプログラムで使用されるアプローチは次のとおりです − 一時変数を初期化して、最終結果を1で格納します ループを0からnまで開始します。nは配列のサイズです 最終結果を得るには、tempの値にarr[i]を掛け続