 GeeksforGeeks App
Open App Browser
Continue

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

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