# Check if an array contains all elements of a given range

An array containing positive elements is given. ‘A’ and ‘B’ are two numbers defining a range. Write a function to check if the array contains all elements in the given range.

Examples :

```Input : arr[] = {1 4 5 2 7 8 3}
A : 2, B : 5
Output : Yes

Input : arr[] = {1 4 5 2 7 8 3}
A : 2, B : 6
Output : No
```

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

Method 1 : (Intuitive)
The most intuitive approach is to sort the array and check from the element greater than ‘A’ to the element greater than ‘B’. If these elements are in continuous order, all elements in the range exists in the array.

Time complexity : O(n log n)
Auxiliary space : O(1)

Method 2 : (Hashing)
We can maintain a count array or a hash table which stores the count of all numbers in the array that are in the range A…B. Then we can simply check if every number occurred at least once.

Time complexity : O(n)
Auxiliary space : O(max_element)

Method 3 : (Best)
Do a linear traversal of the array. If an element is found such that |arr[i]| >= A and |arr[i]|

## C++

 `#include ` `using` `namespace` `std; ` `  `  `// Function to check the array for elements in ` `// given range ` `bool` `check_elements(``int` `arr[], ``int` `n, ``int` `A, ``int` `B) ` `{ ` `    ``// Range is the no. of elements that are ` `    ``// to be checked ` `    ``int` `range = B - A; ` `  `  `    ``// Traversing the array ` `    ``for` `(``int` `i = 0; i < n; i++) { ` `  `  `        ``// If an element is in range ` `        ``if` `(``abs``(arr[i]) >= A && ``abs``(arr[i]) <= B) { ` `  `  `            ``// Negating at index ‘element – A’ ` `            ``int` `z = ``abs``(arr[i]) - A; ` `            ``if` `(arr[z] > 0) { ` `                ``arr[z] = arr[z] * -1; ` `            ``} ` `        ``} ` `    ``} ` `  `  `    ``// Checking whether elements in range 0-range ` `    ``// are negative ` `    ``int` `count=0; ` `    ``for` `(``int` `i = 0; i <= range && i 0) ` `            ``return` `false``; ` `        ``else` `            ``count++; ` `    ``} ` `     ``if``(count!= (range+1)) ` `        ``return` `false``; ` `    ``// All range elements are present ` `    ``return` `true``; ` `} ` `  `  `// Driver code ` `int` `main() ` `{ ` `    ``// Defining Array and size ` `    ``int` `arr[] = { 1, 4, 5, 2, 7, 8, 3 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]); ` `  `  `    ``// A is lower limit and B is the upper limit ` `    ``// of range ` `    ``int` `A = 2, B = 5; ` `  `  `    ``// True denotes all elements were present ` `    ``if` `(check_elements(arr, n, A, B)) ` `        ``cout << ``"Yes"``; ` `  `  `    ``// False denotes any element was not present ` `    ``else` `        ``cout << ``"No"``; ` ` `  `    ``return` `0; ` `}`

## Java

 `// JAVA Code for Check if an array contains ` `// all elements of a given range ` `import` `java.util.*; ` ` `  `class` `GFG { ` `     `  `    ``// Function to check the array for elements in ` `    ``// given range ` `     ``public` `static` `boolean` `check_elements(``int` `arr[], ``int` `n, ` `                                             ``int` `A, ``int` `B) ` `    ``{ ` `        ``// Range is the no. of elements that are ` `        ``// to be checked ` `        ``int` `range = B - A; ` `       `  `        ``// Traversing the array ` `        ``for` `(``int` `i = ``0``; i < n; i++) { ` `       `  `            ``// If an element is in range ` `            ``if` `(Math.abs(arr[i]) >= A &&  ` `                           ``Math.abs(arr[i]) <= B) { ` `       `  `                 `  `                ``int` `z = Math.abs(arr[i]) - A; ` `                ``if` `(arr[z] > ``0``) { ` `                    ``arr[z] = arr[z] * -``1``; ` `                ``} ` `            ``} ` `        ``} ` `       `  `        ``// Checking whether elements in range 0-range ` `        ``// are negative ` `        ``int` `count=``0``; ` ` `  `        ``for` `(``int` `i = ``0``; i <= range && i ``0``) ` `                ``return` `false``; ` `            ``else` `                ``count++; ` `        ``} ` ` `  `        ``if``(count!= (range+``1``)) ` `            ``return` `false``; ` ` `  `        ``// All range elements are present ` `        ``return` `true``; ` `    ``} ` `     `  `    ``/* Driver program to test above function */` `    ``public` `static` `void` `main(String[] args)  ` `    ``{ ` `        ``// Defining Array and size ` `        ``int` `arr[] = { ``1``, ``4``, ``5``, ``2``, ``7``, ``8``, ``3` `}; ` `        ``int` `n = arr.length; ` `       `  `        ``// A is lower limit and B is the upper limit ` `        ``// of range ` `        ``int` `A = ``2``, B = ``5``; ` `       `  `        ``// True denotes all elements were present ` `        ``if` `(check_elements(arr, n, A, B)) ` `            ``System.out.println(``"Yes"``); ` `       `  `        ``// False denotes any element was not present ` `        ``else` `            ``System.out.println(``"No"``); ` `    ``} ` `} ` `// This code is contributed by Arnav Kr. Mandal. `

## Python3

 `# Function to check the array for  ` `# elements in given range  ` `def` `check_elements(arr, n, A, B) : ` `     `  `    ``# Range is the no. of elements  ` `    ``# that are to be checked  ` `    ``rangeV ``=` `B ``-` `A  ` `     `  `    ``# Traversing the array  ` `    ``for` `i ``in` `range``(``0``, n):  ` `     `  `        ``# If an element is in range  ` `        ``if` `(``abs``(arr[i]) >``=` `A ``and`  `            ``abs``(arr[i]) <``=` `B) :  ` `     `  `            ``# Negating at index ‘element – A’  ` `            ``z ``=` `abs``(arr[i]) ``-` `A  ` `            ``if` `(arr[z] > ``0``) :  ` `                ``arr[z] ``=` `arr[z] ``*` `-``1` `             `  `    ``# Checking whether elements in  ` `    ``# range 0-range are negative  ` `    ``count ``=` `0` `    ``for` `i ``in` `range``(``0``, rangeV ``+` `1``):  ` `        ``if` `i >``=` `n: ` `            ``break` `             `  `        ``# Element from range is ` `        ``# missing from array ` `        ``if` `(arr[i] > ``0``):  ` `            ``return` `False` `        ``else``: ` `            ``count ``=` `count ``+` `1` `     `  `    ``if``(count !``=` `(rangeV ``+` `1``)):  ` `        ``return` `False` `         `  `    ``# All range elements are present  ` `    ``return` `True` ` `  `# Driver code  ` ` `  `# Defining Array and size  ` `arr ``=` `[ ``1``, ``4``, ``5``, ``2``, ``7``, ``8``, ``3` `]  ` `n ``=` `len``(arr)  ` `     `  `# A is lower limit and B is  ` `# the upper limit of range  ` `A ``=` `2` `B ``=` `5` `     `  `# True denotes all elements  ` `# were present  ` `if` `(check_elements(arr, n, A, B)) : ` `    ``print``(``"Yes"``)  ` `     `  `# False denotes any element  ` `# was not present  ` `else``: ` `    ``print``(``"No"``)  ` ` `  `# This code is contributed  ` `# by Yatin Gupta `

## C#

 `// C# Code for Check if an array contains ` `// all elements of a given range ` `using` `System; ` ` `  `class` `GFG { ` `     `  `    ``// Function to check the array for  ` `    ``// elements in given range ` `    ``public` `static` `bool` `check_elements(``int` `[]arr, ``int` `n, ` `                                      ``int` `A, ``int` `B) ` `    ``{ ` `        ``// Range is the no. of elements  ` `        ``// that are to be checked ` `        ``int` `range = B - A; ` `     `  `        ``// Traversing the array ` `        ``for` `(``int` `i = 0; i < n; i++) ` `        ``{ ` `     `  `            ``// If an element is in range ` `            ``if` `(Math.Abs(arr[i]) >= A &&  ` `                ``Math.Abs(arr[i]) <= B)  ` `                ``{ ` `                    ``int` `z = Math.Abs(arr[i]) - A; ` `                    ``if` `(arr[z] > 0) ` `                    ``{ ` `                      ``arr[z] = arr[z] * - 1; ` `                    ``} ` `                ``} ` `        ``} ` `     `  `        ``// Checking whether elements in  ` `        ``// range 0-range are negative ` `        ``int` `count=0; ` ` `  `        ``for` `(``int` `i = 0; i <= range  ` `             ``&& i < n; i++)  ` `        ``{ ` `     `  `            ``// Element from range is  ` `            ``// missing from array ` `            ``if` `(arr[i] > 0) ` `                ``return` `false``; ` `            ``else` `                ``count++; ` `        ``} ` ` `  `        ``if``(count != (range + 1)) ` `            ``return` `false``; ` ` `  `        ``// All range elements are present ` `        ``return` `true``; ` `    ``} ` `     `  `    ``// Driver Code ` `    ``public` `static` `void` `Main(String []args)  ` `    ``{ ` `        ``// Defining Array and size ` `        ``int` `[]arr = {1, 4, 5, 2, 7, 8, 3}; ` `        ``int` `n = arr.Length; ` `     `  `        ``// A is lower limit and B is  ` `        ``// the upper limit of range ` `        ``int` `A = 2, B = 5; ` `     `  `        ``// True denotes all elements were present ` `        ``if` `(check_elements(arr, n, A, B)) ` `         ``Console.WriteLine(``"Yes"``); ` `     `  `        ``// False denotes any element was not present ` `        ``else` `            ``Console.WriteLine(``"No"``); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

## PHP

 `= ``\$A` `&&  ` `            ``abs``(``\$arr``[``\$i``]) <= ``\$B``)  ` `        ``{ ` ` `  `            ``// Negating at index ` `            ``// ‘element – A’ ` `            ``\$z` `= ``abs``(``\$arr``[``\$i``]) - ``\$A``; ` `            ``if` `(``\$arr``[``\$z``] > 0)  ` `            ``{ ` `                ``\$arr``[``\$z``] = ``\$arr``[``\$z``] * -1; ` `            ``} ` `        ``} ` `    ``} ` ` `  `    ``// Checking whether elements  ` `    ``// in range 0-range are negative ` `    ``\$count` `= 0; ` `    ``for` `(``\$i` `= 0; ``\$i` `<= ``\$range` `&&  ` `                 ``\$i``< ``\$n``; ``\$i``++)  ` `    ``{ ` ` `  `        ``// Element from range is ` `        ``// missing from array ` `        ``if` `(``\$arr``[``\$i``] > 0) ` `            ``return` `-1; ` `        ``else` `            ``\$count``++; ` `    ``} ` `    ``if``(``\$count``!= (``\$range` `+ 1)) ` `        ``return` `-1; ` `    ``// All range elements ` `    ``// are present ` `    ``return` `true; ` `} ` ` `  `// Driver code ` ` `  `// Defining Array and size ` `\$arr` `= ``array``(1, 4, 5, 2, ` `             ``7, 8, 3); ` `\$n` `= sizeof(``\$arr``); ` ` `  `// A is lower limit and ` `// B is the upper limit ` `// of range ` `\$A` `= 2; ``\$B` `= 5; ` ` `  `// True denotes all ` `// elements were present ` `if` `((check_elements(``\$arr``, ``\$n``, ` `                    ``\$A``, ``\$B``)) == true) ` ` `  `    ``echo` `"Yes"``; ` ` `  `// False denotes any  ` `// element was not present ` `else` `    ``echo` `"No"``; ` ` `  `// This code is contributed by aj_36 ` `?> `

Output :

```Yes
```

Time complexity : O(n)
Auxiliary space : O(1)

This article is contributed by Rohit Thapliyal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up

Improved By : vt_m, jit_t, YatinGupta

Article Tags :
Practice Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.