• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Codility.com PermCheck: Why this gives runtime exception:

 
Ranch Hand
Posts: 197
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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?

 
Ranch Hand
Posts: 43
2
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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.
 
Bartender
Posts: 10780
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

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
reply
    Bookmark Topic Watch Topic
  • New Topic