<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實(shí)戰(zhàn)150:逆波蘭表達(dá)式求值

          共 2456字,需瀏覽 5分鐘

           ·

          2021-01-14 14:29

          算法的重要性,我就不多說(shuō)了吧,想去大廠,就必須要經(jīng)過(guò)基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個(gè)公眾號(hào)后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問題叫做?逆波蘭表達(dá)式求值,我們先來(lái)看題面:
          https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/

          Evaluate the value of an arithmetic expression in Reverse Polish Notation.


          Valid operators are +, -, *, /. Each operand may be an integer or another expression.


          Note:


          Division between two integers should truncate toward zero.

          The given RPN expression is always valid. That means the expression would always evaluate to a result and there won't be any divide by zero operation.

          題意

          根據(jù) 逆波蘭表示法,求表達(dá)式的值。
          有效的運(yùn)算符包括 +, -, *, / 。每個(gè)運(yùn)算對(duì)象可以是整數(shù),也可以是另一個(gè)逆波蘭表達(dá)式。
          說(shuō)明:
          整數(shù)除法只保留整數(shù)部分。
          給定逆波蘭表達(dá)式總是有效的。換句話說(shuō),表達(dá)式總會(huì)得出有效數(shù)值且不存在除數(shù)為 0 的情況。

          樣例

          示例?1:

          輸入: ["2", "1", "+", "3", "*"]
          輸出: 9
          解釋: 該算式轉(zhuǎn)化為常見的中綴算術(shù)表達(dá)式為:((2?+ 1) * 3) = 9
          示例?2

          輸入: ["4", "13", "5", "/", "+"]
          輸出: 6
          解釋: 該算式轉(zhuǎn)化為常見的中綴算術(shù)表達(dá)式為:(4?+ (13?/ 5)) = 6
          示例?3

          輸入: ["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]
          輸出: 22
          解釋:
          該算式轉(zhuǎn)化為常見的中綴算術(shù)表達(dá)式為:
          ??((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


          解題


          逆波蘭表達(dá)式的計(jì)算規(guī)則:

          從左往右遍歷表達(dá)式的每個(gè)數(shù)字和符號(hào),遇到是數(shù)字就進(jìn)棧, 遇到是符號(hào),就將處于棧頂兩個(gè)數(shù)字出棧,進(jìn)行運(yùn)算,運(yùn)算結(jié)果進(jìn)棧,一直到最終獲得結(jié)果。

          時(shí)間復(fù)雜度和空間復(fù)雜度均是O(n),其中n為輸入的字符串?dāng)?shù)組的大小。

          public?class?Solution?{
          ????public?int?evalRPN(String[] tokens)?{
          ????????LinkedList stack?= new?LinkedList<>();
          ????????for(String string?: tokens){
          ????????????switch?(string){
          ????????????????case?"+":
          ????????????????????stack.push(stack.pop() + stack.pop());
          ????????????????????break;
          ????????????????case?"-":
          ????????????????????stack.push(- stack.pop() + stack.pop());
          ????????????????????break;
          ????????????????case?"*":
          ????????????????????stack.push(stack.pop() * stack.pop());
          ????????????????????break;
          ????????????????case?"/":
          ????????????????????Integer num1 = stack.pop();
          ????????????????????Integer num2 = stack.pop();
          ????????????????????stack.push(num2 / num1);
          ????????????????????break;
          ????????????????default:
          ????????????????????stack.push(Integer.parseInt(string));
          ????????????}
          ????????}
          ????????return?stack.pop();
          ????}
          }


          好了,今天的文章就到這里,如果覺得有所收獲,請(qǐng)順手點(diǎn)個(gè)在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動(dòng)力。

          上期推文:

          LeetCode1-140題匯總,希望對(duì)你有點(diǎn)幫助!
          LeetCode刷題實(shí)戰(zhàn)141:環(huán)形鏈表
          LeetCode刷題實(shí)戰(zhàn)142:環(huán)形鏈表 II
          LeetCode刷題實(shí)戰(zhàn)143:重排鏈表
          LeetCode刷題實(shí)戰(zhàn)144:二叉樹的前序遍歷
          LeetCode刷題實(shí)戰(zhàn)145:二叉樹的后序遍歷
          LeetCode刷題實(shí)戰(zhàn)146:LRU 緩存機(jī)制
          LeetCode刷題實(shí)戰(zhàn)147:對(duì)鏈表進(jìn)行插入排序
          LeetCode刷題實(shí)戰(zhàn)148:排序鏈表
          LeetCode刷題實(shí)戰(zhàn)149:直線上最多的點(diǎn)數(shù)


          瀏覽 40
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  北条麻妃无码精品 | 美女操逼在线看 | 蜜臀av在线免费观看 | 人人摸人人操人人看 | 色情网站免费观看在线观看 |