题目解析
首先思考下怎么才能让排列最小,显然对于位置 iii 来说 填入 iii 这样子填是最小的。
举一个例子,当 nnn 为 666,xxx 为 222,对于头与尾的数已经固定了,考虑中间的数,如果 iii 的位置能填 iii 则填 iii。
2 6 3 4 5 1 此时我们发现 nnn 只能填在位置 xxx 上,如果不能填,则找不到最小排列,再考虑 nnn 能不能交换到后面找到一个更小的排列。
AC代码
复杂度
对于任意一组序列都要对后面的数进行一次判定,是否能交换到更小的排列,复杂度为 O(n)O(n)O(n)。