题目:原题链接(中等)
标签:分治算法、递归
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
Ans 1 (Python) | O ( 2 N ) | O ( 2 N ) | 44ms (59.21%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一:
class Solution:
def diffWaysToCompute(self, input: str) -> List[int]:
# 处理只剩下数字的情况
if input.isdigit():
return [int(input)]
# 处理还剩下数字和运算符的情况
ans = []
for i, ch in enumerate(input):
if ch in ["+", "-", "*"]:
left = self.diffWaysToCompute(input[0:i])
right = self.diffWaysToCompute(input[i + 1:])
for n1 in left:
for n2 in right:
if ch == "+":
ans.append(n1 + n2)
elif ch == "-":
ans.append(n1 - n2)
else:
ans.append(n1 * n2)
return ans