3732. Calculate Score After Performing Instructions¶
3732. Calculate Score After Performing Instructions
Medium
You are given two arrays, instructions and values, both of size n.
You need to simulate a process based on the following rules:
- You start at the first instruction at index
i = 0with an initial score of 0. - If
instructions[i]is"add":- Add
values[i]to your score. - Move to the next instruction
(i + 1).
- Add
- If
instructions[i]is"jump":- Move to the instruction at index
(i + values[i])without modifying your score.
- Move to the instruction at index
The process ends when you either:
- Go out of bounds (i.e.,
i < 0 or i >= n), or - Attempt to revisit an instruction that has been previously executed. The revisited instruction is not executed.
Return your score at the end of the process.
Example 1:
Input: instructions = ["jump","add","add","jump","add","jump"], values = [2,1,3,1,-2,-3]
Output: 1
Explanation:
Simulate the process starting at instruction 0:
- At index 0: Instruction is
"jump", move to index0 + 2 = 2. - At index 2: Instruction is
"add", addvalues[2] = 3to your score and move to index 3. Your score becomes 3. - At index 3: Instruction is
"jump", move to index3 + 1 = 4. - At index 4: Instruction is
"add", addvalues[4] = -2to your score and move to index 5. Your score becomes 1. - At index 5: Instruction is
"jump", move to index5 + (-3) = 2. - At index 2: Already visited. The process ends.
Example 2:
Input: instructions = ["jump","add","add"], values = [3,1,1]
Output: 0
Explanation:
Simulate the process starting at instruction 0:
- At index 0: Instruction is
"jump", move to index0 + 3 = 3. - At index 3: Out of bounds. The process ends.
Example 3:
Input: instructions = ["jump"], values = [0]
Output: 0
Explanation:
Simulate the process starting at instruction 0:
- At index 0: Instruction is
"jump", move to index0 + 0 = 0. - At index 0: Already visited. The process ends.
Constraints:
n == instructions.length == values.length1 <= n <= 105instructions[i]is either"add"or"jump".-105 <= values[i] <= 105
Solution¶
class Solution {
public long calculateScore(String[] instructions, int[] values) {
long res = 0;
int idx = 0;
int vis[] = new int[values.length];
while (true) {
if (vis[idx] == 1) break;
vis[idx] = 1;
if (instructions[idx].equals("add")) res += values[idx++];
else idx += values[idx];
if (idx >= values.length || idx < 0) break;
}
return res;
}
}
Complexity Analysis¶
- Time Complexity: O(?)
- Space Complexity: O(?)
Explanation¶
[Add detailed explanation here]