//
// Created by Mr.Hu on 2019/1/21.
//
// leetcode 496 next greater element I
//
// 题目给定两个数组findNums和nums,findNums是nums的子集,要求找出findNums中每一个元素在nums中右边第一个比其大的元素,如果不存在,则为-1。
//
// 最直观的解法,对于findNums中的每一个元素,在nums中找到,然后记录第一个比其大的元素,如果不存在,则为-1,这也是下面代码中的第一种方法。
//
// 第二种方法,先对数组nums进行预处理,得到每个元素中第一个比其大的元素,用map进行存储,因为nums中元素不重复,可以当作key。
// 具体做法就是使用stack数据结构,将每个元素压入栈中,在压入之前,先循环判断栈顶元素与当前元素的大小关系,如果比当前元素小,则说明
// 栈顶元素右边第一个比其大的元素就是当前元素,于是用map记录,栈顶元素出栈,继续判断当前栈顶元素。
// 这个方法比较妙,用栈来初始化大小关系,值得学习。该方法即下面代码中的optimal
//
1 |
|