
Lesson 4 - Counting Elements : PermCheck
A non-empty array A consisting of N integers is given.
A permutation is a sequence containing each element from 1 to N once, and only once.
For example, array A such that:
A[0] = 4
A[1] = 1
A[2] = 3
A[3] = 2
is a permutation, but array A such that:
A[0] = 4
A[1] = 1
A[2] = 3
is not a permutation, because value 2 is missing.
The goal is to check whether array A is a permutation.
Write a function:
class Solution { public int solution(int[] A); }
that, given an array A, returns 1 if array A is a permutation and 0 if it is not.
For example, given array A such that:
A[0] = 4
A[1] = 1
A[2] = 3
A[3] = 2
the function should return 1.
Given array A such that:
A[0] = 4
A[1] = 1
A[2] = 3
the function should return 0.
Write an efficient algorithm for the following assumptions:
- permutation 일 경우 A의 길이와 제일 큰 숫자가 같음
- A 의 길이보다 작으면서 해당 숫자를 포함하고 있는지 여부 확인
- 1부터 N까지 포함여부를 확인해서 하나라도 포함 안 된 경우가 있는지 확인
static class Solution{
public int solution(int[] A){
int answer = 1;
boolean[] contains = new boolean[A.length + 1];
for (int i = 0; i < A.length; i++) {
int number = A[i];
if(number <= A.length && !contains[number]){
contains[number] = true;
}
}
for (int i = 1; i < contains.length; i++) {
if(!contains[i]){
return 0;
}
}
return answer;
}
}