1. 程式人生 > >LeetCode--441--排列硬幣

LeetCode--441--排列硬幣

-c 並且 排列 -- ron coin self 給定 object

問題描述:

你總共有 n 枚硬幣,你需要將它們擺成一個階梯形狀,第 k 行就必須正好有 k 枚硬幣。

給定一個數字 n,找出可形成完整階梯行的總行數。

n 是一個非負整數,並且在32位有符號整型的範圍內。

示例 1:

n = 5

硬幣可排列成以下幾行:
¤
¤ ¤
¤ ¤

因為第三行不完整,所以返回2.

示例 2:

n = 8

硬幣可排列成以下幾行:
¤
¤ ¤
¤ ¤ ¤
¤ ¤

因為第四行不完整,所以返回3.

方法1:

 1 class Solution(object):
 2     def arrangeCoins(self, n):
 3         """
 4         :type n: int
5 :rtype: int 6 """ 7 low = 0 8 high = n 9 10 while low<=high: 11 mid = int((low+high)//2) 12 13 if mid*(mid+1)/2 <= n < (mid+1)*(mid+2)/2: 14 return mid 15 elif mid*(mid+1)/2 > n:
16 high = mid-1 17 elif (mid+1)*(mid+2)/2 <= n: 18 low = mid + 1

AMAZING:

1 class Solution(object):
2     def arrangeCoins(self, n):
3         return int(((8*n + 1)**0.5 - 1)/2)

同上:

class Solution(object):
    def arrangeCoins(self, n):
        
""" :type n: int :rtype: int """ k = int((2*n+0.25)**0.5-0.5) return k

2018-10-03 21:33:05

LeetCode--441--排列硬幣