# Check if array can be converted into strictly decreasing sequence

• Last Updated : 24 May, 2021

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++

 `// C++ implementation to check that``// array can be converted into a``// strictly decreasing sequence``#include ``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);` `    ``// Function calling``    ``if` `(check(arr1, n1)) {``        ``cout << ``"Yes"` `<< endl;``    ``}``    ``else` `{``        ``cout << ``"No"` `<< endl;``    ``}``}`

## Java

 `// 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

 `# 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#

 `// 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`

## Javascript

 ``
Output:
`Yes`

My Personal Notes arrow_drop_up