Given an array arr[], the task is to check whether given array can be converted into a strictly decreasing sequence with the help of the below operation:
- Decrease any element(if it is greater than 1) by 1 in one operation
Examples:
Input: arr[] = {11, 11, 11, 11}
Output : Yes
Explanation:
The given sequence can be converted into
arr[] = {11, 10, 9, 8}
Input: arr[] = {1, 1}
Output: No
Explanation:
The given sequence cannot be converted into strictly decreasing sequence
Approach: The idea is to check whether every element of the array is greater than or equal to (N – index of element), because if it is greater than or equal to (N – index of element) that means array can be converted into [N, N-1, N-2, ….1]
Below is the implementation of the above approach:
// C++ implementation to check that // array can be converted into a // strictly decreasing sequence #include <bits/stdc++.h> using namespace std;
// Function to check that array // can be converted into a // strictly decreasing sequence bool check( int * arr, int n)
{ bool flag = true ;
// Loop to check that each element is
// greater than the (N - index)
for ( int i = 0; i < n; i++) {
// If element is less than (N - index)
if (arr[i] < n - i) {
flag = false ;
}
}
// If array can be converted
if (flag) {
return true ;
}
else {
return false ;
}
} // Driver Code int main()
{ int arr1[] = { 11, 11, 11, 11 };
int n1 = sizeof (arr1) / sizeof (arr1[0]);
// Function calling
if (check(arr1, n1)) {
cout << "Yes" << endl;
}
else {
cout << "No" << endl;
}
} |
// Java implementation to check that // array can be converted into a // strictly decreasing sequence class GFG{
// Function to check that array // can be converted into a // strictly decreasing sequence static boolean check( int []arr, int n)
{ boolean flag = true ;
// Loop to check that each element is
// greater than the (N - index)
for ( int i = 0 ; i < n; i++)
{
// If element is less than (N - index)
if (arr[i] < n - i)
{
flag = false ;
}
}
// If array can be converted
if (flag)
{
return true ;
}
else
{
return false ;
}
} // Driver Code public static void main(String[] args)
{ int arr1[] = { 11 , 11 , 11 , 11 };
int n1 = arr1.length;
// Function calling
if (check(arr1, n1))
{
System.out.print( "Yes" + "\n" );
}
else
{
System.out.print( "No" + "\n" );
}
} } // This code is contributed by amal kumar choubey |
# Python3 implementation to check that # array can be converted into a # strictly decreasing sequence # Function to check that array # can be converted into a # strictly decreasing sequence def check(arr, n):
flag = True ;
# Loop to check that each element
# is greater than the (N - index)
for i in range (n):
# If element is less than (N - index)
if (arr[i] < n - i):
flag = False ;
# If array can be converted
if (flag):
return True ;
else :
return False ;
# Driver Code if __name__ = = '__main__' :
arr1 = [ 11 , 11 , 11 , 11 ];
n1 = len (arr1);
# Function calling
if (check(arr1, n1)):
print ( "Yes" );
else :
print ( "No" );
# This code is contributed by sapnasingh4991 |
// C# implementation to check that // array can be converted into a // strictly decreasing sequence using System;
class GFG{
// Function to check that array // can be converted into a // strictly decreasing sequence static bool check( int []arr, int n)
{ bool flag = true ;
// Loop to check that each element is
// greater than the (N - index)
for ( int i = 0; i < n; i++)
{
// If element is less than (N - index)
if (arr[i] < n - i)
{
flag = false ;
}
}
// If array can be converted
if (flag)
{
return true ;
}
else
{
return false ;
}
} // Driver Code static public void Main(String[] args)
{ int []arr1 = { 11, 11, 11, 11 };
int n1 = arr1.Length;
// Function calling
if (check(arr1, n1))
{
Console.Write( "Yes" + "\n" );
}
else
{
Console.Write( "No" + "\n" );
}
} } // This code is contributed by 29AjayKumar |
<script> // javascript implementation to check that // array can be converted into a // strictly decreasing sequence // Function to check that array // can be converted into a // strictly decreasing sequence function check(arr,n)
{ var flag = true ;
// Loop to check that each element is
// greater than the (N - index)
for (let i = 0; i < n; i++) {
// If element is less than (N - index)
if (arr[i] < n - i) {
flag = false ;
}
}
// If array can be converted
if (flag) {
return true ;
}
else {
return false ;
}
} let arr1= [ 11, 11, 11, 11 ];
let n1 = arr1.length;
// Function calling
if (check(arr1, n1)) {
document.write( "Yes" );
}
else {
document.write( "No" );
}
// This code is contributed by vaibhavrabadiya117.
</script> |
Yes
Time Complexity: O(n)
Auxiliary Space: O(1)