LeetCode--441--排列硬幣
阿新 • • 發佈:2018-10-04
-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: int5 :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--排列硬幣