-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPermCheck
More file actions
80 lines (54 loc) · 1.54 KB
/
PermCheck
File metadata and controls
80 lines (54 loc) · 1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
* 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:
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].
**************************************** SOLUTION ************************************************
function solution($A) {
if (empty($A)) {
return 0;
}
sort($A);
$length = count($A);
if ($length < 1 || $length > 100000) {
return 0;
}
$j = 1;
$tmpNumber = 0;
for ($i = 0; $i < $length; $i++, $j++) {
if (!is_integer($A[$i]) || ($A[$i] < 1 || $A[$i] > 1000000000)) {
return 0;
}
if (($j !== $A[$i]) || ($tmpNumber == $A[$i])) {
return 0;
}
$tmpNumber = $A[$i];
}
return 1;
}