【Python训练营】Python每日一练----第35天:双向排序

举报
是Dream呀 发表于 2022/03/13 19:07:27 2022/03/13
【摘要】 【Python训练营】Python每日一练----第35天:双向排序

在这里插入图片描述

📢📢📢📣📣📣
🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照😜😜😜
🏅🏅🏅Python领域优质创作者,欢迎大家找我合作学习(文末有VX 想进学习交流群or学习资料 欢迎+++)
💕入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺
🍉🍉🍉“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~🌈🌈🌈
🌟🌟🌟✨✨✨

前言:【Python训练营】是针对Python语言学习所打造的一场刷题狂欢party! 对基础知识把握不牢固的话,欢迎参考此套课程:Python公开课 搭配使用最佳嗷~喜欢的话就抓紧订阅起来吧!🍋🍋🍋如果对学习没有自制力或者没有一起学习交流的动力,欢迎私信或者在文末添加我的VX,我会拉你进学习交流群,我们一起交流学习,报团打卡

@TOC

题目描述

在这里插入图片描述
输入输出样例
示例
输入

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训练营的第 1 天,希望每天都能见到最棒的你🏅

🌟 The best time to plant a tree is ten years ago, followed by now! 🌟

🌲🌲🌲 最后,作者很感谢能够阅读到这里的读者。如果看完觉得好的话,还请轻轻点一下赞或者分享给更多的人,你们的鼓励就是作者继续行文的动力。
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了,我们下期再见~
在这里插入图片描述
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。