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

C++で配列に表示されなくなったすべての数値を検索する


n個の要素の配列があるとします。一部の要素は2回表示され、他の要素は1回表示されます。要素は範囲1<=A [i]<=nにあります。配列に存在しない要素を見つける必要があります。制約は、余分なスペースを使用せずにこの問題を解決する必要があり、時間はO(n)になるということです。

したがって、配列が[4、3、2、7、8、2、3、1]の場合、結果は[5、6]

になります。

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

  • nは配列のサイズです
  • 0からn–1の範囲のiの場合
    • x:=| A [i] | -1
    • A [x]> 0の場合、A [x]:=--A [x]
  • 答えを配列として定義する
  • 0からn–1の範囲のiの場合
    • A [i]> 0の場合、答えにi+1を追加します
  • 答えを返す

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

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<int> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]";
}
class Solution {
   public:
   vector<int> findDisappearedNumbers(vector<int>& v) {
      int n = v.size();
      for(int i = 0;i < n; i++){
         int x = abs(v[i]) - 1;
         if(v[x] > 0) v[x] = -v[x];
      }
      vector <int> ans;
      for(int i = 0; i < n; i++){
         if(v[i]>0)ans.push_back(i+1);
      }
      return ans;
   }
};
main(){
   Solution ob;
   vector<int> v{4,3,2,7,8,2,3,5};
   print_vector(ob.findDisappearedNumbers(v));
}

入力

[4,3,2,7,8,2,3,5]

出力

[1, 6, ]

  1. C++の配列内のすべての素数の積

    いくつかの要素を持つ整数配列arr[]が与えられた場合、タスクはその数のすべての素数の積を見つけることです。 素数は、1で割った数、またはその数自体です。または、素数は、1とその数自体を除いて他の数で割り切れない数です。 1、2、3、5、7、11など 与えられた配列の解を見つける必要があります- 入力 −arr [] ={11、20、31、4、5、6、70} 出力 − 1705 説明 −配列の素数は− 11、31、5であり、それらの積は1705 入力 − arr [] ={1、2、3、4、5、6、7} 出力 − 210 説明 −配列の素数は− 1、2、3、5、7

  2. 数値の配列の積の最初の桁を見つけるC++プログラム

    この記事では、指定された配列の要素の積の最初の桁を見つけるプログラムについて説明します。 たとえば、配列が与えられたとしましょう。 arr = {12, 5, 16} その場合、これらの要素の積は12 * 5 * 16 =960になります。したがって、結果、つまりこの場合の積の最初の桁は9になります。 例 #include <bits/stdc++.h> using namespace std; int calc_1digit(int arr[], int x) {    long long int prod = 1;    for(in