码迷,mamicode.com
首页 > 其他好文 > 详细

Beautiful Arrangement II

时间:2017-09-25 09:40:12      阅读:101      评论:0      收藏:0      [点我收藏+]

标签: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)] 

 

Beautiful Arrangement II

标签:sel   技术分享   pre   排序   end   class   self   com   元素   

原文地址:http://www.cnblogs.com/liuxinzhi/p/7590275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!