C++ Program to Modify given array to a non-decreasing array by rotation Last Updated : 27 Jan, 2022 Comments Improve Suggest changes Like Article Like Report Given an array arr[] of size N (consisting of duplicates), the task is to check if the given array can be converted to a non-decreasing array by rotating it. If it's not possible to do so, then print "No". Otherwise, print "Yes". Examples: Input: arr[] = {3, 4, 5, 1, 2}Output: YesExplanation: After 2 right rotations, the array arr[] modifies to {1, 2, 3, 4, 5} Input: arr[] = {1, 2, 4, 3}Output: No Approach: The idea is based on the fact that a maximum of N distinct arrays can be obtained by rotating the given array and check for each individual rotated array, whether it is non-decreasing or not. Follow the steps below to solve the problem: Initialize a vector, say v, and copy all the elements of the original array into it.Sort the vector v.Traverse the original array and perform the following steps:Rotate by 1 in each iteration.If the array becomes equal to vector v, print "Yes". Otherwise, print "No". Below is the implementation of the above approach: C++ // C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to check if a // non-decreasing array can be obtained // by rotating the original array void rotateArray(vector<int>& arr, int N) { // Stores copy of original array vector<int> v = arr; // Sort the given vector sort(v.begin(), v.end()); // Traverse the array for (int i = 1; i <= N; ++i) { // Rotate the array by 1 rotate(arr.begin(), arr.begin() + 1, arr.end()); // If array is sorted if (arr == v) { cout << "YES" << endl; return; } } // If it is not possible to // sort the array cout << "NO" << endl; } // Driver Code int main() { // Given array vector<int> arr = { 3, 4, 5, 1, 2 }; // Size of the array int N = arr.size(); // Function call to check if it is possible // to make array non-decreasing by rotating rotateArray(arr, N); } OutputYES Time Complexity: O(N2)Auxiliary Space: O(N) Please refer complete article on Modify given array to a non-decreasing array by rotation for more details! Comment More infoAdvertise with us Next Article C++ Program to Modify given array to a non-decreasing array by rotation K kartik Follow Improve Article Tags : Sorting Mathematical C++ Programs C++ DSA Arrays rotation array-rearrange +4 More Practice Tags : CPPArraysMathematicalSorting Similar Reads Modify given array to a non-decreasing array by rotation Given an array arr[] of size N (consisting of duplicates), the task is to check if the given array can be converted to a non-decreasing array by rotating it. If it's not possible to do so, then print "No". Otherwise, print "Yes". Examples: Input: arr[] = {3, 4, 5, 1, 2}Output: YesExplanation: After 10 min read C++ Program to Check if it is possible to make array increasing or decreasing by rotating the array Given an array arr[] of N distinct elements, the task is to check if it is possible to make the array increasing or decreasing by rotating the array in any direction.Examples: Input: arr[] = {4, 5, 6, 2, 3} Output: Yes Array can be rotated as {2, 3, 4, 5, 6}Input: arr[] = {1, 2, 4, 3, 5} Output: No 4 min read C++ Program to Print all possible rotations of a given Array Given an integer array arr[] of size N, the task is to print all possible rotations of the array.Examples: Input: arr[] = {1, 2, 3, 4} Output: {1, 2, 3, 4}, {4, 1, 2, 3}, {3, 4, 1, 2}, {2, 3, 4, 1} Explanation: Initial arr[] = {1, 2, 3, 4} After first rotation arr[] = {4, 1, 2, 3} After second rotat 3 min read C++ Program to Find maximum value of Sum( i*arr[i]) with only rotations on given array allowed Given an array, only rotation operation is allowed on array. We can rotate the array as many times as we want. Return the maximum possible summation of i*arr[i]. Examples :  Input: arr[] = {1, 20, 2, 10} Output: 72 We can get 72 by rotating array twice. {2, 10, 1, 20} 20*3 + 1*2 + 10*1 + 2*0 = 72 I 4 min read C++ Program to Maximize count of corresponding same elements in given Arrays by Rotation Given two arrays arr1[] and arr2[] of N integers and array arr1[] has distinct elements. The task is to find the maximum count of corresponding same elements in the given arrays by performing cyclic left or right shift on array arr1[]. Examples:  Input: arr1[] = { 6, 7, 3, 9, 5 }, arr2[] = { 7, 3, 3 min read Like