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

C++の配列で最長の山


次のプロパティが当てはまる場合は、(Aの)サブアレイBを山と呼びます-

  • Bのサイズ>=3
  • B [0] B [i+1]>のような0 B [B.length-1]

整数の配列Aがあるとします。一番長い山の長さを見つけなければなりません。山がない場合は0を返す必要があります。したがって、入力が[2,1,4,7,3,2,5]の場合、結果は5になります。したがって、最大の山は[1,4,7,3,2]になり、その長さは次のようになります。 5.

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

  • ret:=0、n:=配列のサイズa
  • i:=0からn– 1、iをj+1増やします
    • j:=i
    • down:=false、up:=false
    • 一方、j +1 a [j]
      • up:=trueで、jを1増やします
    • upがtrueで、j +1 a [j]
      • down:=trueで、jを1増やします
    • 上下両方が真の場合、ret:=max of j – i + 1を設定し、ret、jを1減らします
  • returnret。

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int longestMountain(vector<int>& a) {
      int ret = 0;
      int n = a.size();
      int j;
      for(int i = 0; i < n; i = j + 1){
         j = i;
         bool down = false;
         bool up = false;
         while(j + 1 < n && a[j + 1] > a[j]) {
            up = true;
            j++;
         }
         while(up && j + 1 < n && a[j + 1] < a[j]){
            down = true;
            j++;
         }
         if(up && down){
            ret = max(j - i + 1, ret);
            j--;
         }
      }
      return ret;
   }
};
main(){
   vector<int> v = {2,1,4,7,3,2,5};
   Solution ob;
   cout << (ob.longestMountain(v));
}

入力

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

出力

5

  1. 文字列のC++配列

    このセクションでは、C++で文字列の配列を定義する方法を説明します。私たちが知っているように、Cには文字列がありませんでした。文字配列を使用して文字列を作成する必要があります。したがって、文字列の配列を作成するには、文字の2次元配列を作成する必要があります。各行は、その行列に異なる文字列を保持しています。 C ++には、stringというクラスがあります。このクラスオブジェクトを使用すると、文字列型データを格納し、それらを非常に効率的に使用できます。オブジェクトの配列を作成できるので、文字列の配列を簡単に作成できます。 その後、文字列型のベクトルオブジェクトを作成し、それらを配列として使用

  2. C++での並べ替え

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