g0301_0400.s0390_elimination_game.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
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