Welcome to Subscribe On Youtube
2011. Final Value of Variable After Performing Operations
Description
There is a programming language with only four operations and one variable X
:
++X
andX++
increments the value of the variableX
by1
.X
andX
decrements the value of the variableX
by1
.
Initially, the value of X
is 0
.
Given an array of strings operations
containing a list of operations, return the final value of X
after performing all the operations.
Example 1:
Input: operations = ["X","X++","X++"] Output: 1 Explanation: The operations are performed as follows: Initially, X = 0. X: X is decremented by 1, X = 0  1 = 1. X++: X is incremented by 1, X = 1 + 1 = 0. X++: X is incremented by 1, X = 0 + 1 = 1.
Example 2:
Input: operations = ["++X","++X","X++"] Output: 3 Explanation: The operations are performed as follows: Initially, X = 0. ++X: X is incremented by 1, X = 0 + 1 = 1. ++X: X is incremented by 1, X = 1 + 1 = 2. X++: X is incremented by 1, X = 2 + 1 = 3.
Example 3:
Input: operations = ["X++","++X","X","X"] Output: 0 Explanation: The operations are performed as follows: Initially, X = 0. X++: X is incremented by 1, X = 0 + 1 = 1. ++X: X is incremented by 1, X = 1 + 1 = 2. X: X is decremented by 1, X = 2  1 = 1. X: X is decremented by 1, X = 1  1 = 0.
Constraints:
1 <= operations.length <= 100
operations[i]
will be either"++X"
,"X++"
,"X"
, or"X"
.
Solutions
Solution 1: Simulation
Traverse the array operations
. For each operation $operations[i]$, if it contains '+'
, then the answer increases by $1$, otherwise the answer decreases by $1$.
The time complexity is $O(n)$, where $n$ is the length of the array operations
. The space complexity is $O(1)$.

class Solution { public int finalValueAfterOperations(String[] operations) { int ans = 0; for (var s : operations) { ans += (s.charAt(1) == '+' ? 1 : 1); } return ans; } }

class Solution { public: int finalValueAfterOperations(vector<string>& operations) { int ans = 0; for (auto& s : operations) ans += (s[1] == '+' ? 1 : 1); return ans; } };

class Solution: def finalValueAfterOperations(self, operations: List[str]) > int: return sum(1 if s[1] == '+' else 1 for s in operations)

func finalValueAfterOperations(operations []string) (ans int) { for _, s := range operations { if s[1] == '+' { ans += 1 } else { ans = 1 } } return }

function finalValueAfterOperations(operations: string[]): number { let ans = 0; for (let operation of operations) { ans += operation.includes('+') ? 1 : 1; } return ans; }

/** * @param {string[]} operations * @return {number} */ var finalValueAfterOperations = function (operations) { let ans = 0; for (const s of operations) { ans += s[1] === '+' ? 1 : 1; } return ans; };

impl Solution { pub fn final_value_after_operations(operations: Vec<String>) > i32 { let mut ans = 0; for s in operations.iter() { ans += if s.as_bytes()[1] == b'+' { 1 } else { 1 }; } ans } }