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:NoExplanation:

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:YesExplanation:

The given array contains all integers from 1 to 5 exactly once. Hence, it represents a permutation of length 5.

**Naive Approach: in O(N^{2}) 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**

- Create a HashTable of N size to store the frequency count of each number from 1 to N
- Traverse through the given array and store the frequency of each number in the HashTable.
- Then traverse the HashTable and check if all the numbers from 1 to N have a frequency of 1 or not.
- 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 <bits/stdc++.h>` `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` |

**Output:**

No

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

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**