无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網 會員登陸 & 注冊

150. 逆波蘭表達式求值

2023-05-22 22:21 作者:薄荷硬糖醬  | 我要投稿

給你一個字符串數組 tokens ,表示一個根據 逆波蘭表示法 表示的算術表達式。


請你計算該表達式。返回一個表示表達式值的整數。


注意:


有效的算符為 '+'、'-'、'*' 和 '/' 。

每個操作數(運算對象)都可以是一個整數或者另一個表達式。

兩個整數之間的除法總是 向零截斷 。

表達式中不含除零運算。

輸入是一個根據逆波蘭表示法表示的算術表達式。

答案及所有中間計算結果可以用 32 位 整數表示。

?


示例 1:


輸入:tokens = ["2","1","+","3","*"]

輸出:9

解釋:該算式轉化為常見的中綴算術表達式為:((2 + 1) * 3) = 9

示例 2:


輸入:tokens = ["4","13","5","/","+"]

輸出:6

解釋:該算式轉化為常見的中綴算術表達式為:(4 + (13 / 5)) = 6

示例 3:


輸入:tokens = ["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

?


提示:


1 <= tokens.length <= 104

tokens[i] 是一個算符("+"、"-"、"*" 或 "/"),或是在范圍 [-200, 200] 內的一個整數

?


逆波蘭表達式:


逆波蘭表達式是一種后綴表達式,所謂后綴就是指算符寫在后面。


平常使用的算式則是一種中綴表達式,如 ( 1 + 2 ) * ( 3 + 4 ) 。

該算式的逆波蘭表達式寫法為 ( ( 1 2 + ) ( 3 4 + ) * ) 。

逆波蘭表達式主要有以下兩個優(yōu)點:


去掉括號后表達式無歧義,上式即便寫成 1 2 + 3 4 + * 也可以依據次序計算出正確結果。

適合用棧操作運算:遇到數字則入棧;遇到算符則取出棧頂兩個數字進行計算,并將結果壓入棧中


來源:力扣(LeetCode)

鏈接:https://leetcode.cn/problems/evaluate-reverse-polish-notation

著作權歸領扣網絡所有。商業(yè)轉載請聯(lián)系官方授權,非商業(yè)轉載請注明出處。

波蘭表達式:

就是將表達式表示成二叉樹然后通過后續(xù)遍歷表達出來,

通過利用棧可以將其結果計算出來

第一種法:

class?Solution?{

public:

????int?evalRPN(vector<string>&?tokens)?{

????????stack<long?long>?s;

????????for(int?i=0;i<tokens.size();i++){

????????????if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/"){

????????????????long?long?a?=?s.top();s.pop();

????????????????long?long?b?=?s.top();s.pop();

????????????????long?long?temp=0;

????????????????if(tokens[i]=="+"){

????????????????????temp?=?a?+?b;?

????????????????????s.push(temp);

????????????????}else?if(tokens[i]=="-"){

????????????????????temp?=?b?-?a;

????????????????????s.push(temp);

????????????????}else?if(tokens[i]=="*"){

????????????????????temp?=?a?*?b;

????????????????????s.push(temp);

????????????????}else?if(tokens[i]=="/"){

????????????????????temp?=?b?/?a;

????????????????????s.push(temp);

????????????????}

????????????}else{

????????????????s.push(stoll(tokens[i]));

????????????}

????????}

????????return?s.top();

????}

};

注意:因為是后續(xù)遍歷出來的字符串,所以因該是第二個作被除數,第一個作除數,

第二個作被減數,第一個作減數


150. 逆波蘭表達式求值的評論 (共 條)

分享到微博請遵守國家法律
夏邑县| 乌恰县| 木里| 平定县| 樟树市| 赫章县| 七台河市| 滨海县| 察隅县| 阿拉善盟| 崇州市| 平安县| 都安| 密山市| 阳山县| 仁布县| 太仓市| 淮滨县| 平和县| 杨浦区| 东乌| 喀喇| 涿州市| 永昌县| 江达县| 榕江县| 石屏县| 建始县| 婺源县| 徐水县| 册亨县| 桦川县| 海原县| 云和县| 连州市| 漯河市| 巴彦淖尔市| 潮安县| 新乐市| 金华市| 通江县|