g0801_0900.s0858_mirror_reflection.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 g0801_0900.s0858_mirror_reflection;
// #Medium #Math #Geometry #2022_03_27_Time_0_ms_(100.00%)_Space_40.8_MB_(64.41%)
/**
* 858 - Mirror Reflection\.
*
* Medium
*
* There is a special square room with mirrors on each of the four walls. Except for the southwest corner, there are receptors on each of the remaining corners, numbered `0`, `1`, and `2`.
*
* The square room has walls of length `p` and a laser ray from the southwest corner first meets the east wall at a distance `q` from the 0th
receptor.
*
* Given the two integers `p` and `q`, return _the number of the receptor that the ray meets first_.
*
* The test cases are guaranteed so that the ray will meet a receptor eventually.
*
* **Example 1:**
*
* ![](https://s3-lc-upload.s3.amazonaws.com/uploads/2018/06/18/reflection.png)
*
* **Input:** p = 2, q = 1
*
* **Output:** 2
*
* **Explanation:** The ray meets receptor 2 the first time it gets reflected back to the left wall.
*
* **Example 2:**
*
* **Input:** p = 3, q = 1
*
* **Output:** 1
*
* **Constraints:**
*
* * `1 <= q <= p <= 1000`
**/
public class Solution {
public int mirrorReflection(int p, int q) {
while (p % 2 == 0 && q % 2 == 0) {
p /= 2;
q /= 2;
}
if (p % 2 == 0) {
return 2;
} else if (q % 2 == 0) {
return 0;
} else {
return 1;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy