栈和排序
Last updated
Last updated
问题简述
思路1
题目要求字典序最大,且数组中的元素确定为 1~n
;
因此第一个出栈的元素一定是 n
;
假设当前出栈元素为 a[i]
,则接下来有两种情况:
如果当前栈顶元素大于 a[i]
之后的最大值,则循环出栈;
否则继续入栈;
写法 1 为上述算法的直观实现(每次查找 a[i+1:n]
中的最大值),会超时;
写法 2 预处理了每个位置之后的最大值(不包含当前位置);
写法 3 是本质上也是上述算法的实现,但是技巧性更强(只遍历一次);
它利用了题目中数组中元素为 1~n
这一特点;如果不是这些元素就会出问题;