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

C++の連続配列


バイナリ配列があるとすると、0と1の数が等しい連続したサブ配列の最大長を見つける必要があります。したがって、入力が[0,1,0]の場合、出力は[0、 1]または[1,0]は、0と1の数が等しい最大の連続配列です。

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

  • ret:=0、n:=numsのサイズ、sum:=0
  • マップmを作成し、m [0]を設定します:=-1
  • 0からnumsのサイズまでの範囲のiの場合– 1
    • sum:=nums[i]が1の場合はsum+1、それ以外の場合はsum:=sum – 1
    • 合計がmの場合、ret:=retの最大値とi– m [sum]、それ以外の場合はm [sum]:=i
  • return ret

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int findMaxLength(vector<int>& nums) {
      int ret = 0;
      int n = nums.size();
      int sum = 0;
      map <int, int> m;
      m[0] = -1;
      for(int i = 0; i < nums.size(); i++){
         sum += nums[i] == 1 ? 1: -1;
         if(m.count(sum)){
            ret = max(ret, i - m[sum]);
         }else m[sum] = i;
      }
      return ret;
   }
};
main(){
   vector<int> v = {0,1,0,0,1};
   Solution ob;
   cout << (ob.findMaxLength(v));
}

入力

[0,1,0,0,1]

出力

4

  1. C++での並べ替え

    このセクションでは、C++で並べ替えアルゴリズムを実行する方法を説明します。並べ替えられた配列は、各要素が数値、アルファベット順などの順序で並べ替えられた配列です。バブルソート、挿入ソート、選択ソート、マージソート、クイックソート、ヒープソートなど、数値配列をソートするための多くのアルゴリズムがあります。選択ソートを使用した配列のソートの詳細については、以下を参照してください。 選択ソートは、ソートされた配列を生成するソート方法です。これは、配列内の最小の要素を繰り返し見つけて、ソートされていない部分の先頭にある要素と交換することによって行われます。 選択ソートを使用してソートされた配列を

  2. C++でポインタ演算を使用した配列の合計

    これは、ポインタを使用して配列要素の合計を見つけるC++プログラムです。 アルゴリズム Begin    Initialize the array elements with values from user input.    Initialize s = 0    Loop for i = 0 to       s = s + *(ptr + i)    Print the sum value in variable s. End サンプルコード #include<iostr