বিবেচনা করুন আমাদের একটি অ্যারে আছে, যা রোটেটেড সোর্টেড অ্যারে। আমাদের বের করতে হবে কতবার রোটেট করলে অ্যারেটি সোর্টেড হবে। (আমরা ডান থেকে বাম রোটেশন বিবেচনা করব।)
ধরুন অ্যারেটি: {15, 17, 1, 2, 6, 11}, তবে অ্যারেটি দুবার রোটেট করলে সোর্টেড হবে। ফাইনাল অর্ডার: {1, 2, 6, 11, 15, 17}। আউটপুট ২।
লজিকটি সহজ: যদি লক্ষ্য করি, তবে রোটেশন কাউন্ট ন্যূনতম উপাদানের ইন্ডেক্সের সমান। তাই ন্যূনতম উপাদান বের করলে তার ইন্ডেক্সই রিজাল্ট।
উদাহরণ
#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