C++でソートおよび回転された配列の最大要素
説明
未知のポイントで回転する個別の要素のソートされた配列が与えられた場合、タスクはその中の最大の要素を見つけることです。
例
入力配列が{30、40、50、10、20}の場合、最大要素は50です。
アルゴリズム
- 最大要素は、次の要素がそれよりも小さい唯一の要素です。次に小さい要素がない場合、回転はありません。つまり、最後の要素が最大です
- 中間要素のこの条件を、mid –1およびmid+ 1の要素と比較して確認します。最大要素がmid–1およびmid+ 1の要素である場合、最大要素が中央にない場合(midでもmidでもない場合) mid + 1)の場合、maximumelementは左半分または右半分のいずれかにあります-
- 中央の要素が最後の要素よりも大きい場合、最大の要素は左半分にあります
- それ以外の最大要素は右半分にあります
例
#include <bits/stdc++.h> using namespace std; int getMaxinSortedAndRorated(int *arr, int lont high) { if (high < low) { return arr[0]; } if (high == low) { return arr[high]; } int mid = low + (high - low) / 2; if (mid < high && arr[mid + 1] < arr[) { return arr[mid]; } if (mid > low && arr[mid] < arr[mid - { return arr[mid - 1]; } if (arr[low] > arr[mid]) { return getMaxinSortedAndRoratrr, low, mid - 1); } else { return getMaxinSortedAndRoratrr, mid + 1, high); } } int main() { int arr[] = {30, 40, 50, 10, 20}; int n = sizeof(arr) / sizeof(arr[0]); cout << "Maximum element = " << getMaortedAndRorated(arr, 0, n - 1) << endl; return 0; }
出力
上記のプログラムをコンパイルして実行する場合。次の出力を生成します-
Maximum element = 5
-
C++でソートされた配列の多数決要素を確認します
7/2と表示されます。 配列内のxの出現を数えることができ、その数がn / 2より大きい場合、答えはtrueになり、そうでない場合はfalseになります。 例 #include <iostream> #include <stack> using namespace std; bool isMajorityElement(int arr[], int n, int x){ int freq = 0; for(int i = 0; i<n; i++){ if(arr[i]
-
Pythonで配列が並べ替えられて回転されているかどうかを確認します
n個の一意の値の配列があるとします。この配列がソートされ、反時計回りに回転しているかどうかを確認する必要があります。ここでは、少なくとも1回のローテーションが必要であるため、完全に並べ替えられた配列は、並べ替えられてローテーションされたとは見なされません。 したがって、入力がnums =[4,5,6,8,1,3]の場合、時計回りに2回回転できるため、出力はTrueになり、[1、3、3のように並べ替えられます。 4、5、6、8]。 これを解決するには、次の手順に従います- min_element:=最小数 min_index:=nums単位のmin_elementのインデックス be