2019年9月17日打卡:leetcode1053

其实还是花了我好久的。但是终于跑通了,我很开心啊。

下面开始进行精简吧:

在交换的时候直接使用: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,那么就是在倒数。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容