- class Solution {
- public:
- int evalRPN(vector
& tokens) { - stack<int> st;
- for(int i = 0; i < tokens.size(); i++) {
- if(tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/") {
- int num1 = st.top();
- st.pop();
- int num2 = st.top();
- st.pop();
- int num3;
- if(tokens[i] == "+") num3 = num1 + num2;
- if(tokens[i] == "-") num3 = num2 - num1;
- if(tokens[i] == "*") num3 = num1 * num2;
- if(tokens[i] == "/") num3 = num2 / num1;
- st.push(num3);
- }else {
- st.push(stoi(tokens[i]));
- }
- }
- return st.top();
- }
- };
时间复杂度:O(n)
空间复杂度:O(n)
- class Solution {
- public:
- vector<int> maxSlidingWindow(vector<int>& nums, int k) {
- MyQueue que;
- vector<int> result;
- for(int i = 0; i < k; i++) {
- que.push(nums[i]);
- }
- result.push_back(que.front());
- for(int i = k; i < nums.size(); i++) {
- que.pop(nums[i - k]);
- que.push(nums[i]);
- result.push_back(que.front());
- }
- return result;
- }
-
- private:
- class MyQueue {
- public:
- deque<int> que;
- void pop(int value) {
- if(!que.empty() && value == que.front()) {
- que.pop_front();
- }
- }
- void push(int value) {
- while(!que.empty() && value > que.back()) {
- que.pop_back();
- }
- que.push_back(value);
- }
- int front() {
- return que.front();
- }
- };
- };
时间复杂度:O(n)
空间复杂度:O(k)