LeetCode题解(0241):为运算表达式设计优先级(Python)

题目:原题链接(中等)

标签:分治算法、递归

解法时间复杂度空间复杂度执行用时
Ans 1 (Python) O ( 2 N ) O(2^N) O(2N) O ( 2 N ) O(2^N) O(2N)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
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页