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:
function solution(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:
N is an integer within the range [1..100,000];
each element of array A is an integer within the range [1..1,000,000,000].
문제는 1부터 N까지 연속된 수가 들어있는 배열이 주어지는데, 연속된 수가 아닌 배열이라면 0을 리턴하고 맞다면 1을 리턴하는 문제다.
배열의 길이가 1,000,000,000까지 해당됨으로 효율성 문제를 인식하지 않으면 오류가 뜰 가능성이 높다.
배열은 연속된 수가 들어있다고 했다. 1>2>3>...>N로 들어가 있다면 1을, 1>3>4>...>N 과 같은 배열로 들어 있다면 0을 리턴해야 한다.
A[i+1] - A[i] !== 1
function solution(A) {
let answer = 1;
A.sort((a,b)=>a-b);
if(A[0] !== 1) return answer = 0
for(let i = 0; i<A.length-1; i++){
if(A[i+1]-A[i] !== 1) return answer = 0
}
return answer
}
https://app.codility.com/programmers/lessons/4-counting_elements/