For this Question: You have a list arr of all integers in the range [1, n] sorted in a strictly increasing order. Apply the following algorithm on arr:

:> Starting from left to right, remove the first number and every other number afterward until you reach the end of the list.
:> Repeat the previous step again, but this time from right to left, remove the rightmost number and every other number from the remaining numbers.
:> Keep repeating the steps again, alternating left to right and right to left, until a single number remains.
Given the integer n, return the last number that remains in arr.<b>User Task:</b>
Since this will be a functional problem, you don't have to take input. You just have to complete the function <b>lastRemaining()</b> that takes Integer "n" as parameter.

<b>Constraints:</b>
1 &le; n &le; 10<sup>9</sup>Return the last number that remains in arr.Sample 1:
Input:
9
Output: 
6
Explanation:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr = [2, 4, 6, 8]
arr = [2, 6]
arr = [6]

Sample 2:
Input:
1
Output: 
1, I have written this Solution Code: 
class Solution {
    public int lastRemaining(int n) {
        if(n == 1) return 1;
        return 2*(1 + n/2 - lastRemaining(n/2));
    }
}
, In this Programming Language: Java, Now tell me if this Code is compilable or not?