网站建设技术服务公司,1688网页版登录入口,怎么做网站301重定向,分类信息网址导航2011. 执行操作后的变量值
存在一种仅支持 4 种操作和 1 个变量 X 的编程语言#xff1a;
X 和 X 使变量 X 的值 加 1 –X 和 X-- 使变量 X 的值 减 1 最初#xff0c;X 的值是 0
给你一个字符串数组 operations #xff0c;这是由操作组成的一个列表#xff0c;返回执行…2011. 执行操作后的变量值
存在一种仅支持 4 种操作和 1 个变量 X 的编程语言
X 和 X 使变量 X 的值 加 1 –X 和 X-- 使变量 X 的值 减 1 最初X 的值是 0
给你一个字符串数组 operations 这是由操作组成的一个列表返回执行所有操作后 X 的 最终值 。
示例 1输入operations [--X,X,X]
输出1
解释操作按下述步骤执行
最初X 0
--XX 减 1 X 0 - 1 -1
XX 加 1 X -1 1 0
XX 加 1 X 0 1 1
示例 2输入operations [X,X,X]
输出3
解释操作按下述步骤执行
最初X 0
XX 加 1 X 0 1 1
XX 加 1 X 1 1 2
XX 加 1 X 2 1 3
示例 3输入operations [X,X,--X,X--]
输出0
解释操作按下述步骤执行
最初X 0
XX 加 1 X 0 1 1
XX 加 1 X 1 1 2
--XX 减 1 X 2 - 1 1
X--X 减 1 X 1 - 1 0提示
1 operations.length 100operations[i] 将会是 “X”、“X”、–X 或者是 “X–”
解题思路
遍历所有的操作判断字符串的内容是否为X或者 X如果是的话就对变量X加1否则的话则减去1.
代码
class Solution {
public:int finalValueAfterOperations(vectorstring operations) {int x(0);for (int i 0; i operations.size(); i) {if (Xoperations[i]||Xoperations[i])x;else x--;}return x;}
};时间复杂度O(n),n为operations数组的长度。空间复杂度O(1)不需要使用额外的空间
优化思路
因为我们发现X 和 X中间的字符都为而对于–X 和 X–中间的字符都为-因此我们不需要判断整个字符串我们只需要遍历所有元素然后判断中间的字符就可以决定这次的操作是加1还是减去1了.
代码
class Solution {
public:int finalValueAfterOperations(vectorstring operations) {int x(0);for (int i 0; i operations.size(); i) {if (operations[i][1])x;else x--;}return x;}
};