2019年9月17日打卡:leetcode1053
2019-09-18 本文已影响0人
PolarBearWYY
其实还是花了我好久的。但是终于跑通了,我很开心啊。
下面开始进行精简吧:
在交换的时候直接使用:a,b=b,a但是呢,耗时很久:
看来当年学习C语言的时候,记下来的最简单的交换方法,虽然笨,但是效果还不错嘛下面总结一下这道题的思路吧:
先找到第一个逆序的数(5,4)那么把5标记下来,这就是准备被交换的数,记为max。
再找到max右边所有的数,从右向左开始,找到第一个<max的数,记下来为r。
交换max和r即可。
但是会出现以下问题,如果是这种情况:[1,5,4,3,3],那么按照上面的规则,变换出来以后,得到的是:[1,5,3,3,4],明显,这不是我们想要的结果,我们希望是:[1,5,3,4,3],那么这里就要考虑一种情况,也就是,当出现两个数相等的时候,我们需要取最左边的为r,用来交换。
学到的小知识:
range(start,stop,step)从start开始(默认是0),到stop结束,步长默认为1,如果是-1,那么就是在倒数。