educative.io

Educative

Why is this valid solution not being accepted?

For the problem on Challenge 9: Re-arrange Positive & Negative Values, I have the following solution, using two-pointers pattern -

class CheckReArrange {

  public static void reArrange(int[] arr) {
    int[] sorted = new int[arr.length];
    int neg = 0, pos = sorted.length-1;
    for(int num: arr) {
      if(num < 0) {
        sorted[neg++] = num;
      }
      else {
        sorted[pos--] = num;
      }
    }

    arr = sorted;
  }
}

I found a previous question asked by another user on this topic - Error in validating - #2 by FatimahAbdullah and in that case, the reason given was that because the array reference was being changed inside the method, it could not be preserved in main().

Well, that’s not really our headache, is it? We are only concerned with the implementation of the method here, not its verification. You can easily change the reArrange() method’s return type to return an array instead of void , and then you can very nicely check the contents of the returned array inside main(). Just because your testing code is not properly written, that’s not a valid reason to not accept a totally correct solution.


Course: Data Structures for Coding Interviews in Java - Learn Interactively
Lesson: Challenge 9: Re-arrange Positive & Negative Values - Data Structures for Coding Interviews in Java


Course: Data Structures for Coding Interviews in Java - Learn Interactively
Lesson: Challenge 9: Re-arrange Positive & Negative Values - Data Structures for Coding Interviews in Java