Leetcode--150. 逆波兰表达式求值

根据逆波兰表示法,求表达式的值。

有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

说明:

整数除法只保留整数部分。
给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
示例 1:

输入: ["2", "1", "+", "3", "*"]
输出: 9
解释: ((2 + 1) * 3) = 9
示例 2:

输入: ["4", "13", "5", "/", "+"]
输出: 6
解释: (4 + (13 / 5)) = 6
示例 3:

输入: ["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]
输出: 22
解释: 
  ((10 * (6 / ((9 + 3) * -11))) + 17) + 5
= ((10 * (6 / (12 * -11))) + 17) + 5
= ((10 * (6 / -132)) + 17) + 5
= ((10 * 0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22

一道栈的题,

逆波兰表示法对于基本的四则运算没有优先级的限制,所以对于本题而言,运算符的优先顺序完全是看运算符在tokens表达式内出现的先后顺序来决定的。定义一个栈,一次遍历tokens表达式,如果是数字则进栈,如果是运算符,则将栈stack内前两个栈顶元素出栈,进行相应运算。

提交的代码:

class Solution {
    public int evalRPN(String[] tokens) {
         int n = tokens.length;
         int i,j=0,sum,m,k;
         int[] nums = new int[n];
         for(i=0;i<n;i++)
         {
             sum=0;
             m = tokens[i].length();
             if(tokens[i].charAt(0)>='0'&&tokens[i].charAt(0)<='9')
             {
                 for(k=0;k<m;k++)
                 {
                     sum=sum*10+ (tokens[i].charAt(k)-'0');
                 }
                 nums[j++] = sum;
             }
             else if(tokens[i].charAt(0)=='-'&&m>1)
             {
                 for(k=1;k<m;k++)
                 {
                     sum=sum*10+ (tokens[i].charAt(k)-'0');
                 }
                 nums[j++] = -sum;
             }
             else if(tokens[i].charAt(0)=='+')
             {
                 nums[j-2] = nums[j-2]+nums[j-1];
                 j=j-1;
             }
             else if(tokens[i].charAt(0)=='-')
             {
                 nums[j-2] = nums[j-2]-nums[j-1];
                 j=j-1;
             }
             else if(tokens[i].charAt(0)=='*')
             {
                 nums[j-2] = nums[j-2]*nums[j-1];
                 j=j-1;
             }
             else if(tokens[i].charAt(0)=='/')
             {
                 nums[j-2] = nums[j-2]/nums[j-1];
                 j=j-1;
             }
        }
         return nums[0];
    }
}

完整的代码:


public class Solution150 {
     public static int evalRPN(String[] tokens) {
         int n = tokens.length;
         int i,j=0,sum,m,k;
         int[] nums = new int[n];
         for(i=0;i<n;i++)
         {
             sum=0;
             m = tokens[i].length();
             if(tokens[i].charAt(0)>='0'&&tokens[i].charAt(0)<='9')
             {
                 for(k=0;k<m;k++)
                 {
                     sum=sum*10+ (tokens[i].charAt(k)-'0');
                 }
                 nums[j++] = sum;
             }
             else if(tokens[i].charAt(0)=='-'&&m>1)
             {
                 for(k=1;k<m;k++)
                 {
                     sum=sum*10+ (tokens[i].charAt(k)-'0');
                 }
                 nums[j++] = -sum;
             }
             else if(tokens[i].charAt(0)=='+')
             {
                 nums[j-2] = nums[j-2]+nums[j-1];
                 j=j-1;
             }
             else if(tokens[i].charAt(0)=='-')
             {
                 nums[j-2] = nums[j-2]-nums[j-1];
                 j=j-1;
             }
             else if(tokens[i].charAt(0)=='*')
             {
                 nums[j-2] = nums[j-2]*nums[j-1];
                 j=j-1;
             }
             else if(tokens[i].charAt(0)=='/')
             {
                 nums[j-2] = nums[j-2]/nums[j-1];
                 j=j-1;
             }
        }
         return nums[0];
     }
     public static void main(String[] args)
     {
         //String[] x = {"2", "1", "+", "3", "*"};
        // String[] x = {"4", "13", "5", "/", "+"};
         String[] x = {"10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"};
         System.out.println(evalRPN(x));
     }
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简论重大科学发现诞生的时机

来源&#xff1a;秦四清科学网博客。链接地址&#xff1a;http://blog.sciencenet.cn/blog-575926-1263364.html 纵观科学史&#xff0c;几乎每一项重大科学发现诞生的时机需要&#xff1a;&#xff08;1&#xff09;当时已具备足够的知识和资料储备&#xff1b;&#xff08;2&…

数据库接口使用示例

考虑到我们的接口文档可能不是很清晰&#xff0c;昨天对接的时候也发现UI人员对我们的接口逻辑不太理解&#xff0c;所以这里写几个典型范例。虽然对接也快对接完了&#xff08;逃&#xff0c;但是这样至少免得以后忘记了。 &#xff08;注&#xff1a;这里的代码都测试过&…

python pip gpl_python pip怎么更新包

1、pip下载安装1.1 pip下载进入https://pypi.python.org/pypi/pip&#xff0c;下载 .tar.gz压缩包1.2 Linux安装pip# tar -xzvf pip-1.5.4.tar.gz 解压# cd pip-1.5.4 进入解压文件# python setup.py install 安装1.3 升级pippython -m pip install…

Leetcode--78. 子集

给定一组不含重复元素的整数数组 nums&#xff0c;返回该数组所有可能的子集&#xff08;幂集&#xff09;。 说明&#xff1a;解集不能包含重复的子集。 示例: 输入: nums [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 思路&…

人工智能皇冠上的明珠:自然语言处理简介、最新进展、未来趋势

来源&#xff1a;图灵人工智能 编辑&#xff1a;TJUNLP 自然语言处理&#xff08;Nature Language Processing&#xff0c;NLP&#xff09;被誉为“人工智能皇冠上的明珠”&#xff0c;一方面表明了它的重要性&#xff0c;另一方面也显现出了它的技术难度。本文整理了自然语言…

realloc 用方法

realloc 用方法 void* realloc(void*, n) 根据n的大小&#xff0c;如果n比较小&#xff0c;就沿用原来的内存地址&#xff08;也就是返回的地址就是原来的地址&#xff09;&#xff0c;在原来地址的内存空间的最后面&#xff0c;加上n大小的内存空间&#xff1b;如果n比较大&am…

Leetcode--90. 子集Ⅱ

给定一个可能包含重复元素的整数数组 nums&#xff0c;返回该数组所有可能的子集&#xff08;幂集&#xff09;。 说明&#xff1a;解集不能包含重复的子集。 示例: 输入: [1,2,2] 输出: [ [2], [1], [1,2,2], [2,2], [1,2], [] ] 思路&#xff1a;相比第78题&…

Yoshua Bengio:深度学习的未来需要“探索高级认知的归纳偏置”

来源&#xff1a;AI科技评论 编译&#xff1a;Mr Bear本文介绍了Yoshua Bengio及其学生Anirudh Goyal近期发表的一篇论文&#xff0c;该论文围绕“归纳偏置”概念&#xff0c;展开了对当下人工智能研究现状的讨论&#xff0c;并提出了富有启发性的观点&#xff1a;不同的深度学…

毕业季

真高兴。 一个懦弱了大学四年的人&#xff0c;竟然破天荒地跑去跟喜欢的女孩子表白。 他依然害怕知道结果&#xff0c;但他不后悔。 转载于:https://www.cnblogs.com/can-i-do/p/9164173.html

头发剪短了要快速生发_怎样生发效果最好最快?四个方法快速长出头发!

脱发问题导致很多人头发稀少、头发细软油腻&#xff0c;这些症状&#xff0c;让患者时常感到十分的痛苦&#xff0c;因为他们每天都要面临被调侃和取笑的尴尬&#xff0c;不仅个人形象全无&#xff0c;更是饱受严重的自卑心理&#xff0c;甚至因为脱发问题&#xff0c;总是给人…

AI求解薛定谔方程,兼具准确度和计算效率,登上《自然-化学》

来源&#xff1a;机器学习研究组订阅号即使并非物理学界人士&#xff0c;我们也对薛定谔这个名字并不陌生&#xff0c;比如「薛定谔的猫」。著名物理学家埃尔温 薛定谔是量子力学奠基人之一&#xff0c;他在 1926 年提出的薛定谔方程&#xff08;Schrdinger equation&#xff…

老鼠喝药水

已知有11瓶无色无味的药水&#xff0c;其中有1瓶有毒并且其他10瓶无毒&#xff0c;喝了有毒的药水后会在23个小时之后的一个小时内毒发身亡&#xff08;死亡时间在1个小时内随机&#xff09;。现在有4只老鼠&#xff0c;如何在一天之内(第二天)找出这瓶有毒的药水&#xff1f; …

整个trick

数据输入方面:1.image pyramid 图像金字塔.目前代码里是先选取一个scale,然后在每个GPU上按照scale读图片,相应的gt也更改."scales":[440, 520, 600, 680, 760] 使用的是短边的缩放到的尺寸,还用个maxsize限制了你的scale必须小于一个值 wk的代码和原本的sensenet很大…

redis修改端口号后还是占用6379_Redis分布式缓存分布式集群搭建

当你试图解决一个你不理解的问题时,复杂化就产成了。—Andy BootheRedis集群安装部署Redis是一个运行在内存的非关系型数据库&#xff0c;因为其速度快(效率高)&#xff0c;支持数据的持久化(安全)&#xff0c;事务操作的原子性(所有操作的原子性)&#xff0c;使得其在高并发场…

千禧年大奖难题之始与未终

来源&#xff1a;数学文化撰文&#xff1a;Arthur Michael Jaffe、薛博卿“千禧年大奖难题”的诞生千禧之际&#xff0c;万象更新&#xff0c;数学界的柔风细雨中惊响起初夏的雷鸣。七个重要的数学问题&#xff01;七百万美元的巨额奖金&#xff01;克雷数学研究所公布的大奖难…

Leetcode--120. 三角形最小路径和

给定一个三角形&#xff0c;找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如&#xff0c;给定三角形&#xff1a; [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11&#xff08;即&#xff0c;2 3 5 1 11&#xff0…

个人做的一些小工具分享

RCTRL键位替代鼠标右键 检测断网休眠工具 单机截图转载于:https://www.cnblogs.com/toumingbai/p/9166443.html

linux mysql 5.6.14_CentOS 6.4下编译安装MySQL 5.6.14

配置用户MySQL启动成功后&#xff0c;root默认没有密码&#xff0c;我们需要设置root密码。设置之前&#xff0c;我们需要先设置PATH&#xff0c;要不不能直接调用mysql修改/etc/profile文件&#xff0c;在文件末尾添加PATH/usr/local/mysql/bin:$PATHexport PATH关闭文件&…

全世界最前沿的125个科学问题

来源&#xff1a;世界先进制造技术论坛在庆祝Science创刊125周年之际&#xff0c;Science公布了125个最具挑战性的科学问题。了解前沿科学研究方向&#xff0c;对你的成长或许有所帮助。简单归纳统计这125个问题&#xff0c;其中涉及生命科学的问题占46%&#xff0c;关系宇宙和…

Leetcode--215. 数组中第K个最大元素

在未排序的数组中找到第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k 4 输出: 4 说明: 你可以假设 k 总是…