1. 程式人生 > >Beautiful Arrangement II

Beautiful Arrangement II

append n+1 while .cn arr obj con pan 排列

    這是一個中等題

  題目:

    技術分享

  思路:

    我是創建一個新列表,列表最開始按一個最低,一個最高排列,如果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)]

Beautiful Arrangement II