我的编程空间,编程开发者的网络收藏夹
学习永远不晚

leetcode 241. Differ

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

leetcode 241. Differ

题目:

Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are+- and *.

大意是给定一个运算,求解所有运算序列的解

例如

Input: "2*3-4*5"

(2*(3-(4*5))) = -34
((2*3)-(4*5)) = -14
((2*(3-4))*5) = -10
(2*((3-4)*5)) = -10
(((2*3)-4)*5) = 10

Output: [-34, -14, -10, -10, 10]

算法思路:

将运算转换成栈过程,这样就将问题转换成一个递归问题

即每一步分为两种走法:

    1)继续向栈中添加数字与运算符

    2)弹出2个数字1个运算符进行计算


代码:

class Solution(object):
    def addOperatorAndNumber(self, inputList, stack):
        if len(inputList) < 2:
            return []
        stack.append(inputList[0])
        stack.append(inputList[1])

        inputList = inputList[2:]
        return self.calculate(inputList,stack)

    def calculateTopStack(self, inputList, stack):
        number1 = int(stack.pop())
        operator = stack.pop()
        number2 = int(stack.pop())

        if operator == "+":
            stack.append(number1 + number2)
        elif operator == "-":
            stack.append(number2 - number1)
        elif operator == "*":
            stack.append(number1 * number2)

        return self.calculate(inputList,stack)

    def calculate(self, inputList, stack):
        if len(stack) == 1:
            if len(inputList) == 0:
                return [stack[0]]
            else:
                return self.addOperatorAndNumber(inputList,stack)

        result1 = self.calculateTopStack(inputList[:], stack[:])
        result2 = self.addOperatorAndNumber(inputList[:],stack[:])

        result1.extend(result2)
        return result1

    def diffWaysToCompute(self, input):
        """
        :type input: str
        :rtype: List[int]
        """

        input = input.replace('+'," + ")
        input = input.replace("-"," - ")
        input = input.replace("*"," * ")

        inputList = input.split(" ")
        stack = [int(inputList[0])]
        return  self.calculate(inputList[1:],stack)




免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

leetcode 241. Differ

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

leetcode 241. Differ

题目:Given a string of numbers and operators, return all possible results from computing all the different possible ways t
2023-01-31

leetCode

two sumGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may
2023-01-31

ORA-55636: Flashback Data Archive enabled table “string”.”string” has differ

文档解释ORA-55636: Flashback Data Archive enabled table string.string has different definition from its history
ORA-55636: Flashback Data Archive enabled table “string”.”string” has differ
2023-11-05

ORA-14263: new subpartition name must differ from that of any other subpartition of the object ORACL

文档解释ORA-14263: new subpartition name must differ from that of any other subpartition of the objectCause: User entered
ORA-14263: new subpartition name must differ from that of any other subpartition of the object ORACL
2023-11-05

ORA-26033: column string.string encryption properties differ for source or target table ORACLE 报错 故障

文档解释ORA-26033: column string.string encryption properties differ for source or target tableCause: The source and
ORA-26033: column string.string encryption properties differ for source or target table ORACLE 报错 故障
2023-11-05

ORA-47989: password should differ by at least 3 characters ORACLE 报错 故障修复 远程处理

文档解释ORA-47989: password should differ by at least 3 charactersCause: The password specified does not differ from the
ORA-47989: password should differ by at least 3 characters ORACLE 报错 故障修复 远程处理
2023-11-05

【leetcode】 46. Permu

Permutations Given a collection of distinct numbers, return all possible permutations.For example, [1,2,3] have the foll
2023-01-31

[leetcode]39. Combin

题目:Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate n
2023-01-31

ORA-14082: new partition name must differ from that of any other partition of the object ORACLE 报错 故

文档解释ORA-14082: new partition name must differ from that of any other partition of the objectCause: User entered ALTER
ORA-14082: new partition name must differ from that of any other partition of the object ORACLE 报错 故
2023-11-05

python(leetcode)-283

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。 说下拿到这
2023-01-30

python(leetcode)-344

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中
2023-01-30

leetcode 3. Longest

题目:Given a string, find the length of the longest substring without repeating characters. For example, the longest subst
2023-01-31

[LeetCode Python3]5

在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所
2023-01-31

leetcode SQL题目

文章目录 组合两个表第二高的薪水第N高的薪水分数排名连续出现的数字超过经理收入的员工查找重复的电子邮件从不订购的客户部门工资最高的员工部门工资前三高的所有员工删除重复的电子邮箱上升的温度游戏玩法分析Ⅰ游戏玩法Ⅳ 组合两个表 SE
2023-08-30

python(leetcode)-66加

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释:
2023-01-30

python(leetcode)-14最

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出
2023-01-30

python(leetcode)-1.两

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7,
2023-01-30

ORA-14262: new subpartition name must differ from the old subpartition name ORACLE 报错 故障修复 远程处理

文档解释ORA-14262: new subpartition name must differ from the old subpartition nameCause: User entered ALTER TABLE/INDEX
ORA-14262: new subpartition name must differ from the old subpartition name ORACLE 报错 故障修复 远程处理
2023-11-05

ORA-01677: standby file name convert parameters differ from other instance ORACLE 报错 故障修复 远程处理

文档解释ORA-01677: standby file name convert parameters differ from other instanceCause: The DB_FILE_STANDBY_NAME_CONVERT
ORA-01677: standby file name convert parameters differ from other instance ORACLE 报错 故障修复 远程处理
2023-11-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录