C++でa[i+ 1]>a[i]を使用して要素を最大化する
問題の説明
N個の整数の配列が与えられた場合、次の配列要素が前の要素arr [i + 1]> arr [i]
より大きくなるように配列要素を再配置します。例
入力配列が{300、400、400、300}の場合、再配置された配列は-
になります。{300、400、300、400}。このソリューションでは、条件arr [i + 1]>arr[i]の2つのインデックスを取得します。したがって、答えは2です。
アルゴリズム
- すべての要素が異なる場合、答えは単純にn-1です。ここでnは配列内の要素の数です
- 繰り返し要素がある場合、答えはn – maxFrequency
例
例を見てみましょう-
#include <bits/stdc++.h> #define MAX 1000 using namespace std; int getMaxIndices(int *arr, int n) { int count[MAX] = {0}; for (int i = 0; i < n; ++i) { count[arr[i]]++; } int maxFrequency = 0; for (int i = 0; i < n; ++i) { if (count[arr[i]] > maxFrequency) { maxFrequency = count[arr[i]]; } } return n - maxFrequency; } int main() { int arr[] = {300, 400, 300, 400}; int n = sizeof(arr) / sizeof(arr[0]); cout << "Answer = " << getMaxIndices(arr, n) << endl; return 0; }
出力
Answer = 2
-
C++のMazeIII
空のスペースと壁のある迷路があり、その迷路の中にボールもあるとします。ボールは、上(u)、下(d)、左(l)、または右(r)の方向に転がることで空きスペースを通過できますが、壁にぶつかるまで転がり続けます。ボールが止まると、次の方向を選ぶことができます。その迷路にも1つの穴があります。ボールが穴に転がると、ボールは穴に落ちます。 したがって、ボールの位置、穴の位置、迷路がある場合、最短距離を移動することでボールがどのように穴に落ちるかを調べる必要があります。ここで、距離は、ボールがスタート(除外)からホール(含まれる)まで移動した空きスペースの数によって定義されます。 「u」、「d」、「l
-
C++で指定された違いを持つペアを見つけます
配列Aがあるとすると、n個の異なる要素があります。 xとyの差が与えられた差dと同じになるように、配列Aからペア(x、y)を見つける必要があります。要素のリストがA=[10、15、26、30、40、70]のようで、差が30の場合、ペアは(10、40)と(30、70)になります この問題を解決するために、配列がソートされていると仮定し、左から2つのポインターをポイント要素に取ります。最初は、最初の1つの「i」が最初の要素を指し、2番目の「j」がポイント要素を指します。 2番目の要素。 A [j] – A [i]がnと同じ場合、ペアを出力します。A[j] – A [i]