I am trying to solve Codility lessons for coding practice, and PermCheck is one of them.
[Change] Description of the problem:
Given a non-empty zero-indexed array A, consisting of N integers. A permutation is a sequence containing each element from 1 to N once and only once. For example, an array A such that:
A[0] = 4 A[1] = 1 A[2] = 3 A[3] = 2
this is a permutation, but an array A such that:
A[0] = 4 A[1] = 1 A[2] = 3
not a permutation because the value 2 is missing. The goal is to check if array A is a permutation. Write a function: class Solution {public int solution (int [] A); , A , :
A[0] = 4 A[1] = 1 A[2] = 3 A[3] = 2
the function should return 1. The given array A is such that:
A[0] = 4 A[1] = 1 A[2] = 3
the function should return 0. Suppose that: N is an integer in the range [1..100,000]; each element of array A is an integer in the range [1..1 000 000 000].
My solution at the moment:
class Solution { public int solution(int[] A) { final int N = A.length; long sum = N * (N+1)/2; for(int i=0; i<A.length; i++) { sum -= A[i]; } return sum == 0 ? 1 : 0; } }
and the results are not what I expect. I know there are many solutions, but I want to know what the problem is with my solution. What corner cases I miss. The input list does not display on the results page in which the above solution fails.