1045. 快速排序(25) python篇

3个点超时 PAT (Basic Level) Practice Python解法 1045 快速排序 3个点超时 PAT (Basic Level) Practice Python解法 1045 快速排序 n = int(input()) otp = [] cnt = 0 lstin = list(map(int, input().split())) min1 = min(lstin) max1 = max(lstin) if lstin[0] == min1: cnt = cnt+1 otp.append(lstin[0]) if lstin[-1] == max1: cnt = 阅读详情

1045. 快速排序(25)

时间限制
200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CAO, Peng

著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。给定划分后的N个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元?

例如给定N = 5, 排列是1、3、2、4、5。则:

  • 1的左边没有元素,右边的元素都比它大,所以它可能是主元;
  • 尽管3的左边元素都比它小,但是它右边的2它小,所以它不能是主元;
  • 尽管2的右边元素都比它大,但其左边的3比它大,所以它不能是主元;
  • 类似原因,4和5都可能是主元。

    因此,有3个元素可能是主元。

    输入格式:

    输入在第1行中给出一个正整数N(<= 105);第2行是空格分隔的N个不同的正整数,每个数不超过109。

    输出格式:

    在第1行中输出有可能是主元的元素个数;在第2行中按递增顺序输出这些元素,其间以1个空格分隔,行末不得有多余空格。

    输入样例:
    5
    1 3 2 4 5
    
    输出样例:
    3
    1 4 5
    


整了一上午,参考了别人的代码,写了两种方案仍然得不到满分,第一种方案对的测试点第二种方案错,第二点种方案对的测试点第一种方案错,弄了半天也不知在哪里不对,希望有人能解答一下。

第一种方案(主元位置固定法)

n=int(input())
m=list(map(int,input().split()))
k=sorted(m)
a=[]
for i in range(n):
    if m[i]==k[i]:
        flag=0
        for j in range(i):
            if m[j]>m[i]:
                flag=1
                break
        if flag==0:
            a.append(str(m[i]))
print(len(a))
if len(a)==0:
    print("")
else:
    print(" ".join(a))
第二种方案(单次遍历排除法)http://www.cnblogs.com/hkevin/p/5510063.html

n=int(input())
m=list(map(int,input().split()))
a=[]
max=0
sum=0
for i in range(n):
    if m[i]>max:
        max = m[i]
        a.append(m[i])
        sum+=1
    else:
        for j in range(len(a)-1,-1,-1):
            if m[i]<a[j]:
                a[j]=0
                sum-=1
            else:
                break
a.sort()
print(sum)
if sum==0:
    print("")
else:
    for i in a:
        if i==0:
            a.remove(i)
    a=list(map(str,a))      
    print(" ".join(a))




电子电器架构刷写方案——General Flash Bootloader ### 文章大体有如下内容: ### 1、简介 ### 2、刷写系统概述 ### 3、Flash Bootloader刷写流程 ### 4、Flash Bootloader架构介绍 ### 5、关于刷写的思考 阅读详情

相关推荐

GD32F407工程模板搭建全记录:从零整理固件库、创建文件夹到编译通过

本文详细记录了GD32F407工程模板的搭建过程,从固件库整理、目录规划到Keil环境配置,帮助开发者快速搭建可维护的嵌入式工程结构。重点介绍了开发环境搭建、工程目录设计、Keil配置及常见编译问题解决方案,适合嵌入式开发者参考。

weixin_29164497的博客 118

对数组的元素按从小到大进行排序 输入格式 有两行 第一行有一个整数n( 5 <= n <= 10 ) 第二行有n个整数 输出格式 输出更新后的数组...

这是一道排序题目。 输入格式: 第一行:一个整数n,表示数组元素个数,5≤n≤10。 第二行:n个整数,表示数组元素。 输出格式: 输出排序后的数组,每个数字之间用空格隔开。 题目要求把数组元素从小到大排序,这可以使用排序算法,如快速排序,冒泡排序,选择排序等等。 ...

weixin_42579969的博客 1201

Java开发者必看:如何快速对接七大主流快递API(附完整代码示例)

本文为Java开发者提供了快速对接顺丰、京东、DHL等七大主流快递API的实战指南。文章深入剖析了不同API的认证、通信协议与参数差异,并提供了高可用的HTTP客户端配置、通用签名工具、SOAP请求处理以及可扩展的领域模型与适配层设计等完整代码示例,帮助开发者构建统一、健壮的物流集成框架,显著提升开发效率。

tech5的博客 728

Python-练习5

- 题目描述:输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2;- 输入描述:输入为一行,n(1 ≤ n ≤ 1000)- 输出描述:输出一个整数,即题目所求- 示例1:- 输入: 10- 输出: 2二. 题目描述:设有n个正整数,将他们连接成一排,组成一个最大的多位整数。 如:n=3时,3个整数1...

weixin_34248118的博客 281

火星遥感数据的获取与处理工具安装详解

有关火星遥感影像数据的那些事...

FengYingLuo的博客 5574

overleaf导入模板

本文介绍了如何在Overleaf平台导入Springer Nature模板。首先下载所需的模板压缩包,然后在Overleaf中选择"Upload project"上传该压缩包。上传后会显示模板文件,包括EPS格式图像文件、LaTeX源文件、BibTeX参考文献文件、PDF输出文件以及文档类文件。这些文件共同构成了完整的LaTeX模板,可用于学术论文写作和排版。

A2787960542的博客 1148

偶在前奇在后排序

偶在前奇在后排序 问题描述: 给定N个不同的整数,要求对这N个整数按如下规则排序并输出。 规则一:所有的偶数排在奇数前面。 规则二:在规则一的前提下按照从大到小的顺序排序 输入说明: 数据由两行构成,第一行为整数n(n<=100),表示待排序整数的数量。第二行是n个整数,每个整数的取值区间都为[-32768~32767],整数之间以空格间隔。 输出说明: 在一行输出排好序的整数,整数之...

hithes的博客 2302

将Apollo高精地图中的车道线叠加在多种导航地图上

本文介绍了将Apollo高精地图车道线叠加到普通导航地图的技术方案。高精地图具备厘米级车道精度和丰富的语义信息,叠加可实现可视化验证、调试分析和数据对比等功能。核心技术包括坐标系统转换(UTM/WGS84/BD09/GCJ02)和数据处理流程,通过Python脚本完成Apollo地图解析、坐标批量转换和多格式输出。文章详细提供了环境准备、工作目录创建和坐标转换脚本等操作步骤,实现了高精地图数据在OpenStreetMap、百度地图和高德地图上的可视化展示。

Hi20240217的博客 1333

pta--输入一个正整数n,再输入n个整数,输出其中的偶数。要求相邻数字中间用一个空格分开,行末不得有多余空格

问题 程序填空题 输入一个正整数n,再输入n个整数,输出其中的偶数。要求相邻数字中间用一个空格分开,行末不得有多余空格 正确答案 由题干知此题共有三个要求: 要求一:输出其中的偶数 要求二:相邻数字间要用空格隔开 要求三:行末不得有多余空格 各要求解决办法: 要求一解决办法:if(x % 2 == 0)就输出 否则不是偶数即不输出 要求二解决办法:因为我首先看到题中的char ch,就先入为主认为ch = ’ ';然而这样就进入了一种死循环,得不出正确答案。 要求三解决办法: 经过查找答案: 最后正确

qq_45856525的博客 3万+

AutoSAR系列讲解(入门篇)4.1-BSW概述

BSW概述,主要讲解BSW的结构组成

雪云飞星的博客 4万+

在 Windows 11 下运行 OminiParse V2,详细教程【含问题解决细节】

OmniParser V2 是微软推出的 GUI 智能体解析工具,可将屏幕截图转换为结构化元素,帮助 LLM 理解和操作界面。它在检测小图标和推理速度上显著提升,延迟降低 60%,并支持多种 LLM。

简简单单Onlinezuozuo 1090

PTA刷题合集(下)

本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。

keop123的博客 2451

深度学习与西储大学轴承数据集(一)

西储大学数据集介绍

weixin_50642818的博客 1万+

1045 快速排序 (25 分)

1045 快速排序 (25 分) C++ 实现 and Python实现。 题意描述: 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元? 例如给定 N=5N = 5N=5, 排列是1、3、2、4、5。则: 1 的左边没有元素,右边的元素都比它大,所以它可...

花花生的博客 1240

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

1045 快速排序 python

1045 快速排序 (25 分) 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元? 例如给定 $N = 5$, 排列是1、3、2、4、5。则: 1 的左边没有元素,右边的元素都比它大,所以它可能是主元; ...

weixin_43731183的博客 207

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

(python 3)1045 快速排序 (25分)

1045快速排序(25分) 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的N个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元? 例如给定 $N = 5$, 排列是1、3、2、4、5。则: 1 的左边没有元素,右边的元素都比它大,所以它可能是主元; 尽管 3 的左边元素都比它小,但其右边的 2 比它小,所以它不能是主元; 尽管 2 的右边元素都比它大,但其左边...

Hanlin的博客 549

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

PAT 1045 快速排序 python

1045 快速排序(25 分) 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元? 例如给定 N=5N=5N = 5, 排列是1、3、2、4、5。则: 1 的左边没有元素,右边的元素都比它大,所以它可能是主元...

Raaay的博客 479

Python PAT乙级 1045 快速排序 (25分)

著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换, 把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数 的排列,请问有多少个元素可能是划分前选取的主元? 例如给定 $N = 5$, 排列是1、3、2、4、5。则: 1 的左边没有元素,右边的元素都比它大,所以它可能是主元; 尽管 3 的左边元素都比它小,但其右边的 2 比它小,所以它不能是主元; 尽管 2 的右边元素都比它大,但其左边的 3 比它大,所以它不能是主元;

qq_42344132的博客 380

B1045 快速排序(python)

1045 快速排序 (25分) 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元? 例如给定 N=5N = 5N=5, 排列是1、3、2、4、5。则: 1 的左边没有元素,右边的元素都比它大,所以它可能是主元; 尽...

傅里叶变不出的博客 495

【PAT_Python解】1045 快速排序

在时间复杂度方面,优化代码从O(n^2)提升到了O(n),这是一个显著的改进。在算法设计方面,优化代码通过引入额外的空间来存储中间结果,从而避免了不必要的重复计算,使算法更加高效。这种优化是算法设计中常见的技巧,特别是在处理大数据集时。动态规划(Dynamic Programming, DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。

新时代先锋的博客 1257

PAT乙级1045 快速排序

解题思路:这题我认为时间给的比较仓促,还是要找最优解算法,题目很清晰就是快排的一次划分,那我们就按照定义来看,主元必须是左边小于它右边大于它的,那我们一次循环找到左边最大的和它比,再另一次循环找到右边最小的和它比,满足左边最大的小于等于它,同时右边最小的也大于等于它,它不就是主元嘛。著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。尽管 2 的右边元素都比它大,但其左边的 3 比它大,所以它不能是主元;

qq_44063802的博客 1251

1045 快速排序 Python实现

1045 快速排序(25 分) 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元? 例如给定 $N = 5$, 排列是1、3、2、4、5。则: 1 的左边没有元素,右边的元素都比它大,所以它可能是主元; 尽...

BTboay 1035

1045 快速排序 (25 分)

1045 快速排序 (25 分) 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元? 例如给定 N=5N = 5N=5, 排列是1、3、2、4、5。则: 1 的左边没有元素,右边的元素都比它大,所以它可能是主元; ...

麦琪家的小麦 224

1045. 快速排序(25)

1045. 快速排序(25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放

sky的博客 175

PAT乙级_1045 快速排序_Python_AC解法_无疑难点

本文介绍了PAT乙级1045题"1045快速排序"的Python解法。题目要求找出给定排列中可能作为快速排序主元的元素。解法思路是:通过两次遍历数组,分别记录每个元素左侧的最大值和右侧的最小值,然后判断当前元素是否同时满足大于等于左侧最大值和小于等于右侧最小值。满足条件的元素即为可能的主元。文章特别说明代码可能存在命名不规范等问题,并欢迎读者提出改进建议。最终输出符合条件的主元个数及其升序排列结果。时间复杂度为O(n),空间复杂度为O(n)。

CongQianS1的博客 441
上一篇: 1060. 爱丁顿数(25) python篇
下一篇: 1007. 素数对猜想 (20) python篇
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值