标签:sel 技术分享 pre 排序 end class self com 元素
这是一个中等题
我是创建一个新列表,列表最开始按一个最低,一个最高排列,如果p==k-1了,那么就停止,把剩下元素依次排序,比如n=10,k=3,我就先排1,然后把10加进去,这时p=1,再把2加进去,这时p=2,满足了p=k-1,然后把剩下元素按2,3,4,5,6,7,8,9排序加入列表中。之所以这么做是因为他的差值不会重复,1和10的差最大了,2和10的次大.......
class Solution(object): def constructArray(self, n, k): """ :type n: int :type k: int :rtype: List[int] """ c = 0 b = 2 a = [1] p = 0 while p != k-1: if c == 0: c = 1 a.append(n) n -= 1 else: c = 0 a.append(b) b += 1 p += 1 if c == 0: for i in xrange(b, n+1): a.append(i) else: for i in xrange(n, b-1, -1): a.append(i) if k != 1: return a else: return [i for i in xrange(1, n+1)]
标签:sel 技术分享 pre 排序 end class self com 元素
原文地址:http://www.cnblogs.com/liuxinzhi/p/7590275.html