1045. 快速排序(25)--Python

这个开始看的数据这么大,应该很容易超时。的确,在第一次编写完后,只有测试点0过了,然后别的都是超时,所以就到网上找了找思路,发现了一种不错的判断主元的方法,就是把排好序的列表与原始列表进行比较,看看有哪些元素的位置没有发生改变,这些元素若是还是原始列表从头到现在的最大值,则有可能是主元,保存结果。

本来以为借用了大牛的思路,可以顺利的通过,谁知道测试点2又说格式错误,而且在反复提交的时候测试点1有时还会报超时, 真是跪了,每次遇见这种处理大数据的程序,老是挂,格式错误也没有发现是什么鬼。

大神的链接

#将字符串类型的数据改为整数类型的,便于比较大小
def get_int(list):
	list_2 = []
	for num in list:
		num = int(num)
		list_2.append(num)
	return list_2
	
num = input()
num = int(num)
string = input()

list = string.split() #存放正常的数据列表
list = get_int(list)
my_list = string.split() #存放有序的数据列表
my_list = get_int(my_list)

my_list.sort()
list_1 = []
#判断列表中的每一个元素是否为主元
length = len(list)
max = 0
for i in range(length):
	if list[i] > max:
		max = list[i]
	if list[i] == my_list[i] and max == list[i]:
		list_1.append(max)
		
count = len(list_1)
print(count)
#从小到大输出结果
list_1.sort()
for n in list_1:
	if n == list_1[-1]:
		print(n)
	else:
		print(str(n) + ' ', end = '')








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值