力扣31 下一个排列

下一个排列

第一想法是从右往左遍历,先固定第一个数,然后去找第一个比它小的数,找到后交换两数的位置,并按(两数靠左边的数,end)升序,即可完成,但是O(n)=n^2;

优解是从右往左遍历时,从下标为len-2开始向左遍历,每次都和当前下标的右边一位比较,直到找到一个比它小的数,记为n。然后从len-1下标向左遍历,找到第一个比n大的数,交换两数位置,并将(两数靠左边的数,end)升序,时间复杂度O(n)=n。

posted @ 2022-08-18 20:42  OraCat  阅读(3)  评论(0编辑  收藏  举报