求比元素两边小的数
如序列:3 2 4 1 5 7
元素 左边 右边
3 无 2
2 无 1
4 2 1
1 无 无
5 1 无
7 5 无
解法:
维护一个栈,栈内元素递增
首先3进栈
再2准备进栈,但此时栈内元素不是递增,3先出栈。
因此2是3右边最近的比3小的元素。
同时3出栈,3出栈后,top为空。因此3左边最近的比3小的元素不存在。 因此 3 无 2;
2进栈后,4准备进栈。
此时满足递增。继续下一个元素1准备进栈。
1小于栈顶元素4。因此4出栈。同时1是4右边最近最小的元素。
4出栈后,top为2。因此4左边最近的比4校的元素是2。因此 4 2 1;
总结:
元素按顺序准备进栈。
若栈顶元素大于准备进栈的元素a,则栈顶元素b弹出,并且b的右边最近小的元素是a。b左边最近最小的元素是b出栈后栈顶元素c。