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

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 hereAnother 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 NTraverse 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”.
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
Java
Python3
C#
Javascript
// 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 notstring 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 codeint main(){    int arr[] = { 1, 1, 5, 5, 3 };    int n = sizeof(arr) / sizeof(int);    cout << permutation(arr, n) << endl;     return 0;}
// Java program to decide if an array// represents a permutation or notclass GFG{  // Function to check if an// array represents a permutation or notstatic 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 codepublic 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 program to decide if an array# represents a permutation or not # Function to check if an# array represents a permutation or notdef 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 codeif __name__ == "__main__" :     arr = [ 1, 1, 5, 5, 3 ];    n = len(arr);    print(permutation(arr, n));     # This code is contributed by Yash_R
// C# program to decide if an array// represents a permutation or notusing 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
<script> // JavaScript program to decide if an array// represents a permutation or not // Function to check if an// array represents a permutation or notfunction permutation(arr, N){     var hash = Array(N+1).fill(0);     // Counting the frequency    for (var i = 0; i < N; i++) {        hash[arr[i]]++;    }     // Check if each frequency is 1 only    for (var i = 1; i <= N; i++) {        if (hash[i] != 1)            return "No";    }     return "Yes";} // Driver codevar arr = [1, 1, 5, 5, 3];var n = arr.length;document.write( permutation(arr, n)); </script>
No
 
Time Complexity: O(N) Auxiliary Space Complexity: O(N) 
princi singh
Yash_R
noob2000
permutation
Arrays
Hash
Mathematical
Arrays
Hash
Mathematical
permutation
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stack Data Structure (Introduction and Program)
Top 50 Array Coding Problems for Interviews
Multidimensional Arrays in Java
Introduction to Arrays
Linear Search
Internal Working of HashMap in Java
Hashing | Set 1 (Introduction)
Hashing | Set 3 (Open Addressing)
Hashing | Set 2 (Separate Chaining)
Most frequent element in an array