Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/2113.html
2113. Elements in Array After Removing and Replacing Elements
Description
You are given a 0indexed integer array nums
. Initially on minute 0
, the array is unchanged. Every minute, the leftmost element in nums
is removed until no elements remain. Then, every minute, one element is appended to the end of nums
, in the order they were removed in, until the original array is restored. This process repeats indefinitely.
 For example, the array
[0,1,2]
would change as follows:[0,1,2] → [1,2] → [2] → [] → [0] → [0,1] → [0,1,2] → [1,2] → [2] → [] → [0] → [0,1] → [0,1,2] → ...
You are also given a 2D integer array queries
of size n
where queries[j] = [time_{j}, index_{j}]
. The answer to the j^{th}
query is:
nums[index_{j}]
ifindex_{j} < nums.length
at minutetime_{j}
1
ifindex_{j} >= nums.length
at minutetime_{j}
Return an integer array ans
of size n
where ans[j]
is the answer to the j^{th}
query.
Example 1:
Input: nums = [0,1,2], queries = [[0,2],[2,0],[3,2],[5,0]] Output: [2,2,1,0] Explanation: Minute 0: [0,1,2]  All elements are in the nums. Minute 1: [1,2]  The leftmost element, 0, is removed. Minute 2: [2]  The leftmost element, 1, is removed. Minute 3: []  The leftmost element, 2, is removed. Minute 4: [0]  0 is added to the end of nums. Minute 5: [0,1]  1 is added to the end of nums. At minute 0, nums[2] is 2. At minute 2, nums[0] is 2. At minute 3, nums[2] does not exist. At minute 5, nums[0] is 0.
Example 2:
Input: nums = [2], queries = [[0,0],[1,0],[2,0],[3,0]] Output: [2,1,2,1] Minute 0: [2]  All elements are in the nums. Minute 1: []  The leftmost element, 2, is removed. Minute 2: [2]  2 is added to the end of nums. Minute 3: []  The leftmost element, 2, is removed. At minute 0, nums[0] is 2. At minute 1, nums[0] does not exist. At minute 2, nums[0] is 2. At minute 3, nums[0] does not exist.
Constraints:
1 <= nums.length <= 100
0 <= nums[i] <= 100
n == queries.length
1 <= n <= 10^{5}
queries[j].length == 2
0 <= time_{j} <= 10^{5}
0 <= index_{j} < nums.length
Solutions

class Solution { public int[] elementInNums(int[] nums, int[][] queries) { int n = nums.length, m = queries.length; int[] ans = new int[m]; for (int j = 0; j < m; ++j) { ans[j] = 1; int t = queries[j][0], i = queries[j][1]; t %= (2 * n); if (t < n && i < n  t) { ans[j] = nums[i + t]; } else if (t > n && i < t  n) { ans[j] = nums[i]; } } return ans; } }

class Solution { public: vector<int> elementInNums(vector<int>& nums, vector<vector<int>>& queries) { int n = nums.size(), m = queries.size(); vector<int> ans(m, 1); for (int j = 0; j < m; ++j) { int t = queries[j][0], i = queries[j][1]; t %= (n * 2); if (t < n && i < n  t) { ans[j] = nums[i + t]; } else if (t > n && i < t  n) { ans[j] = nums[i]; } } return ans; } };

class Solution: def elementInNums(self, nums: List[int], queries: List[List[int]]) > List[int]: n, m = len(nums), len(queries) ans = [1] * m for j, (t, i) in enumerate(queries): t %= 2 * n if t < n and i < n  t: ans[j] = nums[i + t] elif t > n and i < t  n: ans[j] = nums[i] return ans

func elementInNums(nums []int, queries [][]int) []int { n, m := len(nums), len(queries) ans := make([]int, m) for j, q := range queries { t, i := q[0], q[1] t %= (n * 2) ans[j] = 1 if t < n && i < nt { ans[j] = nums[i+t] } else if t > n && i < tn { ans[j] = nums[i] } } return ans }