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

C++のRotatedSorted配列でRotationCountを検索します


回転してソートされた配列である配列があるとします。配列をソートするために必要な回転数を見つける必要があります。 (右から左への回転を検討します。)

配列が{15、17、1、2、6、11}のようであるとすると、配列を2回回転させて並べ替える必要があります。最終的な注文は{1、2、6、11、15、17}になります。ここでの出力は2です。

ロジックは単純です。気づいたら、回転数が最小要素のインデックスの値と同じであることがわかります。したがって、最小の要素を取得すると、そのインデックスが結果になります。

#include <iostream>
using namespace std;
int getMinIndex(int arr[], int n){
   int index = 0;
   for(int i = 1; i<n; i++){
      if(arr[i] < arr[index]){
         index = i;
      }
   }
   return index;
}
int countNumberOfRotations(int arr[], int n){
   return getMinIndex(arr, n);
}
int main() {
   int arr[] = {15, 17, 1, 2, 6, 11};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "Number of required rotations: " << countNumberOfRotations(arr, n);
}

出力

Number of required rotations: 2

  1. C ++を使用して、配列内の数値の頻度を見つけます。

    配列があるとします。 n個の異なる要素があります。配列内の1つの要素の頻度を確認する必要があります。 A =[5、12、26、5、3、4、15、5、8、4]とすると、5の頻度を見つけようとすると、3になります。 これを解決するために、左から配列をスキャンします。要素が指定された数と同じである場合は、カウンターを増やします。それ以外の場合は、配列がなくなるまで次の要素に進みます。 例 #include<iostream> using namespace std; int countElementInArr(int arr[], int n, int e) {   &nbs

  2. C++の配列内の各要素のSurpasserCountを検索します

    1つの配列Aが与えられたと仮定します。その配列内の各要素の超過者の数を見つける必要があります。超過者は、現在の要素の配列の右側に存在するより大きな要素です。 A ={2、7、5、3、0、8、1}とすると、超過者は{4、1、1、1、2、0、0}であるため、2の右側には4つの数字があります。 4よりも多く、他の人にも同じルールがあります。解決策は非常に単純で、2つのネストされたループがあり、要素ごとに、超過者をカウントして、別の配列に格納します。 例 #include <iostream> using namespace std; void gerSurpassers(int arr[