zoukankan      html  css  js  c++  java
  • 150. Evaluate Reverse Polish Notation

    package LeetCode_150
    
    import java.util.*
    
    /**
     * 150. Evaluate Reverse Polish Notation
     * https://leetcode.com/problems/evaluate-reverse-polish-notation/description/
     *
     * 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.
    
    Example 1:
    Input: ["2", "1", "+", "3", "*"]
    Output: 9
    Explanation: ((2 + 1) * 3) = 9
    
    Example 2:
    Input: ["4", "13", "5", "/", "+"]
    Output: 6
    Explanation: (4 + (13 / 5)) = 6
     * */
    class Solution {
        fun evalRPN(tokens: Array<String>): Int {
            /*
            * Time complexity:O(n), Space complexity:O(1)
            * */
            val stack = Stack<Int>()
            val operators = listOf("+", "-", "*", "/")
            for (item in tokens) {
                if (item in operators) {
                    val top2 = stack.pop()
                    val top1 = stack.pop()
                    var n = 0
                    when (item) {
                        "+" -> {
                            n = top1 + top2
                        }
                        "-" -> {
                            n = top1 - top2
                        }
                        "*" -> {
                            n = top1 * top2
                        }
                        "/" -> {
                            n = top1 / top2
                        }
                    }
                    //push into stack to prepare for next calculate
                    stack.push(n)
                } else {
                    stack.add(item.toInt())
                }
            }
            return stack.peek()
        }
    }
  • 相关阅读:
    Leetcode.11 Container with Most Water
    Leetcode.19 Remove Nth Node From End of List
    Leetcode23. Merge K sorted List
    leetcode287. Find the duplicate Number
    LeetCode234. Palindrome Linked List
    leetcode.142 LinkedList Cycle II
    UINavigationController
    UITableView的性能优化1
    iOS触摸事件
    UITableView的性能优化
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13030677.html
Copyright © 2011-2022 走看看