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

C ++のソートされた配列で25%を超えて表示される要素


配列Aがあるとします。要素はほとんどありません。いくつかの要素は一般的です。配列に25%以上のスペースが表示されている要素を返す必要があります。したがって、A =[1、2、4、4、4、4、5、5、6、6、7、7]の場合、ここで4が4回発生しています。これは12(アレイのサイズ)の25%以上です

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

  • 要素を読み取り、それぞれの頻度を保存します
  • 頻度が配列サイズの25%を超える場合は、結果を返します。

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
      int findSpecialInteger(vector<int>& arr) {
         int n = arr.size();
         int req = n / 4;
         unordered_map <int, int> m;
         int ans = -1;
         for(int i = 0; i < n; i++){
            m[arr[i]]++;
            if(m[arr[i]] > req)ans = arr[i];
         }
         return ans;
      }
};
main(){
   Solution ob;
   vector<int> c = {1,2,4,4,4,4,5,5,6,6,7,7};
   cout << ob.findSpecialInteger(c);
}

入力

[1,2,4,4,4,4,5,5,6,6,7,7]

出力

4

  1. 2つ以上(または配列)の数値のGCD用のC ++プログラム?

    2つの数値の公約数は、両方の除数である数値です。 たとえば、12の約数は1、2、3、4、6、12です。18の約数は1、2、3、6、9、18です。したがって、12と18の公約数は1、2です。 、3、6。これらの中で最大のものは、おそらく当然のことながら、12と18のと呼ばれます。2つの整数aとbの最大公約数の通常の数学表記は、(a、b)で表されます。したがって、(12、18)=6です。 最大公約数は多くの理由で重要です。たとえば、2つの数値、つまりこれらの数値の倍数である最小の正の整数を計算するために使用できます。数値aとbの最小公倍数は、a * b *(a、b)として計算できます。 たと

  2. 2つ以上(または配列)の数値のGCD0のC++プログラム?

    ここでは、3つ以上の数値の公約数を取得する方法を説明します。 2つの数値の公約数を見つけるのは簡単です。 3つ以上の数値のgcdを見つけたい場合は、gcdの結合法則に従う必要があります。たとえば、{w、x、y、z}のgcdを検索する場合は、{gcd(w、x)、y、z}、次に{gcd(gcd(w、x)、y)になります。 、z}、最後に{gcd(gcd(gcd(w、x)、y)、z)}。アレイを使用すると、非常に簡単に実行できます。 アルゴリズム gcd(a、b) begin    if a is 0, then       return b &n