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

来源:互联网 发布:海马玩mac版怎么安装 编辑:程序博客网 时间:2024/06/10 15:27

本题的考虑点:

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

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

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

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


原创粉丝点击