Leetcode

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,那么就是在倒数。

上一篇 下一篇

猜你喜欢

热点阅读