<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】逆波蘭表達(dá)式

          共 3070字,需瀏覽 7分鐘

           ·

          2021-04-04 01:32


          本篇推文共計2000個字,閱讀時間約3分鐘。



          01


          題目描述


          題目描述:


          根據(jù)逆波蘭表示法,求表達(dá)式的值。

          有效的算符包括 +、-、*、/ 。每個運算對象可以是整數(shù),也可以是另一個逆波蘭表達(dá)式。

           

          說明:

          1.整數(shù)除法只保留整數(shù)部分。

          2.給定逆波蘭表達(dá)式總是有效的。換句話說,表達(dá)式總會得出有效數(shù)值且不存在除數(shù)為 0 的情況。


          示例 1:

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


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


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




          02


          思路和方法


          對于此題我們可以想到用的方式來解決:


          1.通過遍歷數(shù)組;

          2.當(dāng)數(shù)組遍歷到的字符為數(shù)字時,將數(shù)字壓入棧;

          3.當(dāng)遇到運算符號時候,再把棧頂?shù)膬蓚€數(shù)字拿出來進(jìn)行計算,計算的結(jié)果再壓入棧中;

          4.以此類推直至遍歷完數(shù)組;

          5.最后輸出棧中元素,即為最后的答案。

           

          再注意題目的細(xì)節(jié)部分,整數(shù)除法只保留整數(shù)部分

           

          由上述分析,

          我們利用圖解法結(jié)合案例再來直觀的分析地本題。





          例如:

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


          圖解如下:


          i=0時,

          此時遍歷到的數(shù)組字符是數(shù)字2,將數(shù)字2壓入棧中。


          i=1時,

          此時遍歷到的數(shù)組字符是數(shù)字1,將數(shù)字1壓入棧中。


          i=2時,

          此時遍歷到的數(shù)組字符是運算符號/,此時將棧頂?shù)膬蓚€元素取出進(jìn)行整除操作。

          2/1=2

          將棧頂兩個元素的計算結(jié)果2壓入棧中。



          i=3時,

          此時遍歷到的數(shù)組字符是數(shù)字3,將數(shù)字3壓入棧中。



          i=4時,

          此時遍歷到的數(shù)組字符是運算符號*,此時將棧頂?shù)膬蓚€元素取出進(jìn)行乘法操作。

          2*3=6將棧頂兩個元素的計算結(jié)果6壓入棧中。

           

          數(shù)組遍歷完畢,最后輸出棧中元素即為結(jié)果




          我們用代碼表示為:

          class Solution:
              def evalRPN(self, tokens: List[str]) -> int:
                  stack=[]
                  for t in tokens:
                      if t not in "+-*/":
                          stack.append(int(t))
                      elif len(stack)>1:
                          b,a=stack.pop(),stack.pop()
                          if t=='+':
                              stack.append(a+b)
                          if t=='-':
                              stack.append(a-b)
                          if t=='*':
                              stack.append(a*b)
                          if t=='/':
                              stack.append(int(a/b))
                  return stack[-1]




          往期回顧

          【年終總結(jié)】你好2021,再見2020。


          【秋招紀(jì)實錄】一篇特別正經(jīng)的【騰訊】求職經(jīng)驗分享


          【一天一道Leetcode】設(shè)計停車系統(tǒng)



          ☆ END ☆

          你與世界

          只差一個

          公眾號

          瀏覽 78
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  在线看一区二区三区 | 13一16女处被毛片视频 | 黑人大粗鸡巴肏白人老骚 逼 | 久草资源在线 | 欧美成人破处视频 |