# Check if an Array is a permutation of numbers from 1 to N : Set 2

• Last Updated : 21 May, 2021

Given an array arr containing N positive integers, the task is to check if the given array arr represents a permutation or not.

A sequence of N integers is called a permutation if it contains all integers from 1 to N exactly once.

Examples:

Input: arr[] = {1, 2, 5, 3, 2}
Output: No
Explanation:
The given array contains 2 twice, and 4 is missing for the array to represent a permutation of length 5.
Input: arr[] = {1, 2, 5, 3, 4}
Output: Yes
Explanation:
The given array contains all integers from 1 to 5 exactly once. Hence, it represents a permutation of length 5.

Naive Approach: in O(N2) Time
This approach is mentioned here
Another Approach: in O(N) Time and O(N) Space
This approach is mentioned here.
Efficient Approach: Using HashTable

1. Create a HashTable of N size to store the frequency count of each number from 1 to N
2. Traverse through the given array and store the frequency of each number in the HashTable.
3. Then traverse the HashTable and check if all the numbers from 1 to N have a frequency of 1 or not.
4. Print “Yes” if the above condition is True, Else “No”.

Below is the implementation of the above approach:

## CPP

 `// C++ program to decide if an array` `// represents a permutation or not` `#include ` `using` `namespace` `std;`   `// Function to check if an` `// array represents a permutation or not` `string permutation(``int` `arr[], ``int` `N)` `{`   `    ``int` `hash[N + 1] = { 0 };`   `    ``// Counting the frequency` `    ``for` `(``int` `i = 0; i < N; i++) {` `        ``hash[arr[i]]++;` `    ``}`   `    ``// Check if each frequency is 1 only` `    ``for` `(``int` `i = 1; i <= N; i++) {` `        ``if` `(hash[i] != 1)` `            ``return` `"No"``;` `    ``}`   `    ``return` `"Yes"``;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `arr[] = { 1, 1, 5, 5, 3 };` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(``int``);` `    ``cout << permutation(arr, n) << endl;`   `    ``return` `0;` `}`

## Java

 `// Java program to decide if an array` `// represents a permutation or not` `class` `GFG{` ` `  `// Function to check if an` `// array represents a permutation or not` `static` `String permutation(``int` `arr[], ``int` `N)` `{` ` `  `    ``int` `[]hash = ``new` `int``[N + ``1``];` ` `  `    ``// Counting the frequency` `    ``for` `(``int` `i = ``0``; i < N; i++) {` `        ``hash[arr[i]]++;` `    ``}` ` `  `    ``// Check if each frequency is 1 only` `    ``for` `(``int` `i = ``1``; i <= N; i++) {` `        ``if` `(hash[i] != ``1``)` `            ``return` `"No"``;` `    ``}` ` `  `    ``return` `"Yes"``;` `}` ` `  `// Driver code` `public` `static` `void` `main(String[] args)` `{` `    ``int` `arr[] = { ``1``, ``1``, ``5``, ``5``, ``3` `};` `    ``int` `n = arr.length;` `    ``System.out.print(permutation(arr, n) +``"\n"``);` `}` `}`   `// This code is contributed by Princi Singh`

## Python3

 `# Python3 program to decide if an array` `# represents a permutation or not`   `# Function to check if an` `# array represents a permutation or not` `def` `permutation(arr,  N) :`   `    ``hash` `=` `[``0``]``*``(N ``+` `1``);`   `    ``# Counting the frequency` `    ``for` `i ``in` `range``(N) :` `        ``hash``[arr[i]] ``+``=` `1``;`   `    ``# Check if each frequency is 1 only` `    ``for` `i ``in` `range``(``1``, N ``+` `1``) :` `        ``if` `(``hash``[i] !``=` `1``) :` `            ``return` `"No"``;`   `    ``return` `"Yes"``;`   `# Driver code` `if` `__name__ ``=``=` `"__main__"` `:`   `    ``arr ``=` `[ ``1``, ``1``, ``5``, ``5``, ``3` `];` `    ``n ``=` `len``(arr);` `    ``print``(permutation(arr, n));`   `    ``# This code is contributed by Yash_R`

## C#

 `// C# program to decide if an array` `// represents a permutation or not` `using` `System;`   `class` `GFG{` ` `  `    ``// Function to check if an` `    ``// array represents a permutation or not` `    ``static` `string` `permutation(``int` `[]arr, ``int` `N)` `    ``{` `     `  `        ``int` `[]hash = ``new` `int``[N + 1];` `     `  `        ``// Counting the frequency` `        ``for` `(``int` `i = 0; i < N; i++) {` `            ``hash[arr[i]]++;` `        ``}` `     `  `        ``// Check if each frequency is 1 only` `        ``for` `(``int` `i = 1; i <= N; i++) {` `            ``if` `(hash[i] != 1)` `                ``return` `"No"``;` `        ``}` `     `  `        ``return` `"Yes"``;` `    ``}` `     `  `    ``// Driver code` `    ``public` `static` `void` `Main(``string``[] args)` `    ``{` `        ``int` `[]arr = { 1, 1, 5, 5, 3 };` `        ``int` `n = arr.Length;` `        ``Console.Write(permutation(arr, n) +``"\n"``);` `    ``}` `}`   `// This code is contributed by Yash_R`

## Javascript

 ``

Output:

`No`

Time Complexity: O(N)
Auxiliary Space Complexity: O(N)

My Personal Notes arrow_drop_up
Recommended Articles
Page :