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

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

网络异常,图片无法展示
|

📢📢📢📣📣📣 🌻🌻🌻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! 🌟

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

网络异常,图片无法展示
|
网络异常,图片无法展示
|

目录
相关文章
|
1月前
|
搜索推荐 Python
快速排序的 Python 实践:从原理到优化,打造你的排序利器!
本文介绍了 Python 中的快速排序算法,从基本原理、实现代码到优化方法进行了详细探讨。快速排序采用分治策略,通过选择基准元素将数组分为两部分,递归排序。文章还对比了快速排序与冒泡排序的性能,展示了优化前后快速排序的差异。通过这些分析,帮助读者理解快速排序的优势及优化的重要性,从而在实际应用中选择合适的排序算法和优化策略,提升程序性能。
37 1
|
2月前
|
存储 算法 搜索推荐
算法进阶之路:Python 归并排序深度剖析,让数据排序变得艺术起来!
算法进阶之路:Python 归并排序深度剖析,让数据排序变得艺术起来!
78 0
|
3月前
|
Python
Python中几种lambda排序方法
【9月更文挑战第7天】在Python中,`lambda`表达式常用于配合排序函数,实现灵活的数据排序。对于基本列表,可以直接使用`sorted()`进行升序或降序排序;处理复杂对象如字典列表时,通过`lambda`指定键值进行排序;同样地,`lambda`也适用于根据元组的不同位置元素来进行排序。
|
3月前
|
数据处理 Python
python遍历文件夹所有文件按什么排序
python遍历文件夹所有文件按什么排序
29 0
|
3月前
|
数据处理 Python
Python遍历文件夹所有文件并按指定排序
Python遍历文件夹所有文件并按指定排序
82 0
|
4月前
|
Python
Python魔法:用一行代码实现数据排序
【8月更文挑战第31天】忘掉传统多行排序代码,本文揭秘如何使用一行Python代码快速对数据进行排序,同时深入探讨背后的原理和性能考量。
|
4月前
|
Python
【Python】对字典进行排序
该文档介绍了如何在Python中对字典进行排序的方法。
28 2
|
5月前
|
Python
Python小技巧:一种字符串的排序方式
Python小技巧:一种字符串的排序方式
47 0
|
4月前
|
算法 索引 Python
【Leetcode刷题Python】34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)
解决LeetCode "在排序数组中查找元素的第一个和最后一个位置" 问题的方法。第一种方法是使用两次二分查找,首先找到目标值的最左边界,然后找到最右边界。第二种方法是利用Python的list.index()方法,先正序找到起始位置,再逆序找到结束位置,并给出了两种方法的Python实现代码。
64 0
|
4月前
|
Python
【Python】对key或values是datetime类型或时间字符串的字典dict排序
本文提供了针对字典中key为时间字符串或datetime类型时进行排序的解决方案,包括将时间字符串转换为datetime对象排序和直接对datetime类型的key排序的方法。
41 0