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

C++の最初の一意の番号


整数のキューがあるとすると、そのキューの最初の一意の整数を取得する必要があります。 FirstUniqueというクラスを実装する必要があります。これはキュー内の番号によって初期化されます。 1つの関数showFirstUnique()を定義します。これにより、キューの最初の一意の整数の値が返され、そのような整数がない場合は-1が返されます。もう1つのメソッドはadd(value)で、これによりキューに値が挿入されます。

したがって、入力が次のような場合

  • [2,3,4]で初期化し、次のように関数を呼び出します-

  • showFirstUnique()

  • add(5)

  • showFirstUnique()

  • add(2)

  • showFirstUnique()

  • add(3)

  • showFirstUnique()、

その場合、出力はそれぞれ2、2、3、-1になります。

これを解決するには、次の手順に従います-

  • 1つのキューを定義するq

  • 1つのマップcntを定義する

  • イニシャライザは配列を取得します

    • numsの各要素iについて

      • (cnt [i]を1増やします)

    • numsの各要素iについて

      • cnt [i]が1と同じ場合、-

        • iをqに挿入

  • 関数showFirstUnique()

    を定義します
  • (qが空でなく、cnt[qの最初の要素]>1)の場合、-

    • qから要素を削除

  • return(qが空の場合は-1、それ以外の場合はqの最初の要素)

  • 関数add()を定義します。これは値を取ります

  • (cnt [value]を1増やします)

  • cnt [value]が1と同じ場合、-

    • qに値を挿入

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
class FirstUnique {
public:
   queue <int> q;
   map <int, int> cnt;
   FirstUnique(vector<int>& nums) {
      for (int i : nums) {
         cnt[i]++;
      }
      for (int i : nums) {
         if (cnt[i] == 1) {
            q.push(i);
         }
      }
   }
   int showFirstUnique() {
      while (!q.empty() && cnt[q.front()] > 1) q.pop();
         return q.empty() ? -1 : q.front();
   }
   void add(int value) {
      cnt[value]++;
      if (cnt[value] == 1)
         q.push(value);
   }
};
main(){
   vector<int> v = {2,3,5};
   FirstUnique ob(v);
   cout << (ob.showFirstUnique()) << endl;
   ob.add(5);
   cout << (ob.showFirstUnique()) << endl;
   ob.add(2);
   cout << (ob.showFirstUnique()) << endl;
   ob.add(3);
   cout << (ob.showFirstUnique()) << endl;
}

入力

{2,3,5}
ob.showFirstUnique();
ob.add(5);
ob.showFirstUnique();
ob.add(2);
ob.showFirstUnique();
ob.add(3);
ob.showFirstUnique();

出力

2
2
3
-1

  1. C++での質素な数

    この問題では、正の整数Nが与えられます。私たちのタスクは、与えられた数が質素な数であるかどうかをチェックするプログラムを作成することです。 不正な番号 −指定された数の素因数分解の桁数よりも厳密に桁数が多い数。 例 − 625、数625の素因数は5 4です。 。 625の桁数は3です。 5 4の桁数 は2です。 3は厳密に2より大きくなります。したがって、625は質素な数です。 最初のいくつかの質素な数は − 125、128、243、256、343、512、625など。 問題を理解するために例を見てみましょう Input: n = 128 Output: Frugal n

  2. C++五胞体数

    五胞体数は、パスカルの三角形の5番目の数として表されます。ご存知のように、これは5番目の数字です。つまり、パスカルの三角形に少なくとも5つの数字が必要です。したがって、このシリーズの最初の数字は 1 4 6 4 1から始まります。 パスカルの三角形の4行目。したがって、このチュートリアルでは、たとえば、n番目の五胞体数を見つける必要があります Input : 1 Output : 1 Input : 4 Output : 35 次の図から出力を確認できます- この問題については、可能な限り、これは一種のシリーズであるため、ソリューションでこのシリーズのパターンを見つけようと