All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0301_0400.s0390_elimination_game.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0301_0400.s0390_elimination_game;

// #Medium #Math #Recursion #2022_07_13_Time_4_ms_(81.16%)_Space_42_MB_(71.14%)

/**
 * 390 - Elimination Game\.
 *
 * Medium
 *
 * 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`.
 *
 * **Example 1:**
 *
 * **Input:** n = 9
 *
 * **Output:** 6
 *
 * **Explanation:**
 *
 *     arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
 *     arr = [2, 4, 6, 8]
 *     arr = [2, 6]
 *     arr = [6]
 *
 * **Example 2:**
 *
 * **Input:** n = 1
 *
 * **Output:** 1
 *
 * **Constraints:**
 *
 * *   1 <= n <= 109
**/
public class Solution {
    public int lastRemaining(int n) {
        return n == 1 ? 1 : 2 * (n / 2 - lastRemaining(n / 2) + 1);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy