• 单调栈解决next_greater_Number问题


    PS:单调栈就是栈结构构成,不过元素进栈是按照一定的规则进栈,下面主要通过求数组下一个比其大的数每日温度这两个问题来讲述单调栈的使用。 

    // 求数组中每个数的下一个比其大的数,如果没有返回-1
    
    class Solution {
    public: 
    	vector<int> next_greater_element(vector<int> nums) {
    		// 使用单调栈解决
    		stack<int> sta; 
    		vector<int> res(nums.size()); 
    		for (int i = nums.size()-1; i >= 0; i--) {
    			while (!sta.empty() && nums[i] >= sta.top()) {
    				sta.pop(); 
    			}
    			res[i] = sta.empty() ? -1 : sta.top(); // 存入的是值
    			sta.push(nums[i]); 
    		}
    		return res; 
    
    	}
    };
    
    
    //每日温度
    
    class Solution2  {
    public:
    	vector<int> daily_temperate(vector<int> nums) {
    		// 跟上面类似
    		stack<int> sta; 
    		int n = nums.size(); 
    		vector<int> res(n); 
    		for (int i = n - 1; i >= 0; i--) {
    			while (!sta.empty() && nums[i] >= sta.top()) {
    				sta.pop();
    			}
    			res[i] = sta.empty() ? -1 : sta.top() - i;  // 注意这里是存入隔多少天后会有更高的温度
    			sta.push(nums[i]); 
    		}
    		return res; 
    	}
    };
    

      

  • 相关阅读:
    Java快速教程
    让我们来了解一下:操作系统和平台相关性
    初窥Linux 之 我最常用的20条命令
    ES6学习笔记一
    Data时间管理大全
    generator多返回值写法
    箭头函数=>
    闭包
    高阶函数:map/reduce
    函数方法that与apply
  • 原文地址:https://www.cnblogs.com/E-Dreamer-Blogs/p/12386633.html
Copyright © 2020-2023  润新知