[leetcode: Python]441. Arranging Coins

来源:互联网 发布:阳光网络伴我成长 编辑:程序博客网 时间:2024/04/30 04:51

You have a total of n coins that you want to form in a staircase shape, where every k-th row must have exactly k coins.

Given n, find the total number of full staircase rows that can be formed.

n is a non-negative integer and fits within the range of a 32-bit signed integer.

Example 1:

n = 5The coins can form the following rows:¤¤ ¤¤ ¤Because the 3rd row is incomplete, we return 2.

Example 2:

n = 8The coins can form the following rows:¤¤ ¤¤ ¤ ¤¤ ¤Because the 4th row is incomplete, we return 3.

方法一:1215ms

class Solution(object):    def arrangeCoins(self, n):        """        :type n: int        :rtype: int        """        if n == 0:            return 0        k = 1        while n > 0:            if n - k > 0:                n -= k                k += 1            elif n == k:                return k            else:                return k-1

方法二:65ms
欣赏这个解法,学会这个思路

'''Find x that satisfy the condition: 1+2+3+4+5+6+7+...+x ≤ nSumming the AP for first x terms, S = x(x+1)/2 ≤ nSolving quadratic, discarding -ve soln, x = (sqrt(8n+1) - 1)/2'''class Solution(object):    def arrangeCoins(self, n):        return int(((8*n + 1)**0.5 - 1)/2)
原创粉丝点击