programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering OS Languages Paradigms IDEs Build Tools Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

# Codility.com PermCheck: Why this gives runtime exception:

Winston Liek
Ranch Hand
Posts: 194
First of all, here is the problem description:

A non-empty zero-indexed 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.
The goal is to check whether array A is a permutation.
Write a function:
class Solution { public int solution(int[] A); }
that, given a zero-indexed 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.
Assume that:
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].
Complexity:
expected worst-case time complexity is O(N);
expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments).

Here is my solution to the problem:

But evertime I run it, I am gettign an error:

Running solution...

Compilation successful

Example test : example1 - OK
example2 - RUNTIME ERROR (tested program terminated unexpectedly)
Output:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Solution.solution(Solution.java:12)
at wrapper.run(wrapper.java:27)
at wrapper.main(wrapper.java:20)

Detected some errors.

Here is my sample test data:
[4, 1, 3, 2]
I'm certain that it should not give any runtime errors. But why? Is this a bug?

Amar Saikia
Ranch Hand
Posts: 43
2
I have tested the code using java 7 compiler and its working fine without giving any run time exception with the sample you have provided.

Having said that, I must say the logic you have applied will give you run time exception for different type inputs. Consider a sample array [14, 1, 2,3 ] . The size will be 4. Now the code will create an array B with size 5.

So far so good. But now, will give you ArrayIndexOutOfBoundsException as B[14] is non existent. So, you will have to change the logic to get it work properly.

Winston Gutkowski
Bartender
Posts: 10575
66
ryan gadhkov wrote:I have tested the code using java 7 compiler...

A very nice and comprehensive answer that deserves a cow. Well done.

Winston

 Did you see how Paul cut 87% off of his electric heat bill with 82 watts of micro heaters?