1023. 组个最小数 (20)-----Python

本题的考虑点:

(1)列表中存储的是相应位置的个数,实际要储存的是所在的位置,因此使用flag来记录所处理数据的位置。

(2)考虑清楚第一个位置,也就是0的个数,我把0的个数单独拿出来分析的,使用pop将第一个数据从列表中删除,然后判断其是否为零,若不为零的话,单独考虑,因为其不为零,所以就是在剩下的列表中找到第一个非零的所在位置,把此数据所在的位置存储到结果数列中,然后再把数据减一。再接下来的执行就是常规的执行,剩余的数列,找到数列中的每一个非零数据,将数据所在位置按数据的个数存储到新的列表中,最后将列表转换为字符串输出即可。

(3)需要注意的就是要弄清楚原始列表中存储的仅是个数,真正应该存储到新列表的是数据所在的位置。可以说Python真的很好用。再见

def get_in():
	string = input()
	list = []
	for num in string.split():
		list.append(int(num))
	return list
	
def get_result(list):
	first_num = list.pop(0)
	sum_list = [] 
	if first_num != 0:
		flag = 0
		while True:
			if list[flag] != 0:
				list[flag] -= 1
				break
			else:
				flag += 1
		sum_list.append(flag + 1)
		while first_num:
			sum_list.append(0)
			first_num -= 1
	
	flag = 1
	for num in list:
		if num != 0:
			while num:
				sum_list.append(flag)
				num -= 1
		flag += 1
	return sum_list
		
my_list = get_in()
list = get_result(my_list)
my_str = ''
for num in list:
	my_str += str(num)
print(my_str)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值