网络异常,图片无法展示
|
📢📢📢📣📣📣 🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照😜😜😜 🏅🏅🏅Python领域优质创作者,欢迎大家找我合作学习(文末有VX 想进学习交流群or学习资料 欢迎+++) 💕
入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺
🍉🍉🍉“一万次悲伤,依然会有Dream
题目描述
网络异常,图片无法展示
|
3 3 0 3 1 2 0 2
输出
3 1 2
样例说明 原数列为 (1, 2, 3)。
第 11 步后为 (3, 2, 1)。
第 22 步后为 (3, 1, 2)。
第 33 步后为 (3, 1, 2)。与第 2 步操作后相同,因为前两个数已经是降序了。
解题思路
- 首先题目中说的是要么将a1到aqi降序排列,要么将aqi到an升序排列,其中特别要注意一点,aqi在两次的排序中都会出现,这个我们要提前搞明白,不然最后总是出不来正确结果,比如我!!!一直出错,最后才发现,aqi两次排序都包含其中,真的是头大。
- 我们可以创建三个列表,其中list1用来存储我们输入的操作类型,即是升序还是降序,这个地方我们后续使用if else语句来判断;list2用来存储我们输入的参数,即对几个数进行操作;list3作为我们的目标列表,开始时需要先将其中的元素表示出来
list3 = [i for i in range(1,length+1)]
- 当降序时:list3 = sorted(list3[0:list2[i-1]],reverse=True) + list3[list2[i-1]:]
- 当升序时:list3 = list3[:list2[i-1]-1]+sorted(list3[list2[i-1]-1:]),此时千万别忘了,此时的界限是
list2[i-1]-1
,因为还是之前说的aqi在两次排序中都会出现,因为我们是根据降序来写升序的,所以在求升序时,需要额外将aqi加进去,就需要-1
最后的最后,当我们提交时他居然超时啦,啊啊啊我直接哭死啦!我是真的没办法~希望大家如果有优化方法的话,可以指导一下我,实在是搞不太懂这些东西,头都大啦。
源码分享
import os import sys # 请在此输入您的代码 length,num = map(int, input().split()) list1 = [] list2 = [] for i in range(num): a,b = map(int, input().split()) list1.append(a) list2.append(b) list3 = [i for i in range(1,length+1)] for i in range(1, num+1): if list1[i-1] == 0: list3 = sorted(list3[0:list2[i-1]],reverse=True) + list3[list2[i-1]:] else : list3 = list3[:list2[i-1]-1]+sorted(list3[list2[i-1]-1:]) for i in list3: print(i,end=' ')
学习总结
🏅今天是我在Python训练营的第 35 天,希望每天都能见到最棒的你🏅
🌟
The best time to plant a tree is ten years ago, followed by now!
🌟
🌲🌲🌲 最后,作者很感谢能够阅读到这里的读者。如果看完觉得好的话,还请轻轻点一下赞或者分享给更多的人,你们的鼓励就是作者继续行文的动力。 ❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了,我们下期再见~
网络异常,图片无法展示
|
网络异常,图片无法展示
|