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

C++での配列変換


最初の配列arrがあると仮定し、前日の配列を使用して新しい配列を毎日作成することを検討してください。 i日目に、i-1日の配列に対して次の操作を実行して、i日の配列を生成します。条件は以下の通りです-

  • 要素がその左と右の隣接する値の両方よりも小さい場合、この要素はインクリメントされます。

  • 要素がその左と右の隣接する値の両方よりも大きい場合、この要素はデクリメントされます。

  • 最初と最後の要素は同じままです。

数日後、配列は変更されなくなります。その最終的な配列を見つけます。したがって、初期配列が[6,2,3,4]の場合、出力は[6,3,3,4]になります。初日、配列は[6,2,3,4]から[6,3,3,4]に変更され、それ以降は操作は実行されません。

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

  • 配列サイズが2または2未満の場合は、配列を返します
  • フラグを設定:=true
  • フラグがtrueの場合-
    • フラグを設定:=false
    • tempという空の配列を1つ作成し、arr[0]をtempに挿入します
    • for iの範囲は1から配列サイズ– 1
      • arr [i]
      • それ以外の場合、arr [i]>arr[i-1]およびarr[i]>arr [i + 1]の場合、arr [i] – 1を温度に挿入し、フラグを設定します:=true
      • >
      • それ以外の場合は、arr[i]をtempに挿入します
    • arrの最後の要素をtempに挿入します
    • arr:=temp
  • 返品
例(C ++)

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

#include <bits/stdc++.h>
using namespace std;
#define push push_back
void print_vector(vector<auto> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
public:
   vector<int> transformArray(vector<int>& arr) {
      if(arr.size()<=2)return arr;
      bool flag = true;
      while(flag){
         flag = false;
         vector <int> temp;
         temp.push_back(arr[0]);
         for(int i = 1; i < arr.size()-1; i++){
            if(arr[i]< arr[i-1] && arr[i]<arr[i+1]){
               temp.push(arr[i]+1);
               flag = true;
            }
            else if(arr[i]> arr[i-1] && arr[i]>arr[i+1]){
               flag = true;
               temp.push(arr[i]-1);
            }
            else temp.push(arr[i]);
         }
         temp.push_back(arr[arr.size()-1]);
         arr = temp;
      }
      return arr;
   }
};
main(){
   Solution ob;
   vector<int> v = {1,6,3,4,3,5};
   print_vector(ob.transformArray(v));
}

入力

[1,6,3,4,3,5]

出力

[1,4,4,4,4,5]

  1. 文字列のC++配列

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

  2. C++での並べ替え

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