def get_seq_and_pos(N, pos): """ 求解序列 1,2,2,3,3,3,4,4,4,4,5,5,5,5,5...n,n,n 同时支持返回第pos 个元素的值 :param N: 序列最大值 :param pos: 序列中的第pos个元素.从1开始 :return: 返回上述序列构成的一个列表 """ if N < 0 or pos <= 0: return 'typeError' else: # 用计数排序的思想构造辅助列表。下标0 对应值0,下标1对应值1... ls1 = list(i for i in xrange(N+1)) # 保存最终的序列,是一个列表 res = [] for i in xrange(len(ls1)): res += ls1[i]*[i] return res, res[pos-1] print get_seq_and_pos(4, 7)
用计数排序的思想进行求解。核心是
res += ls1[i]*[i]