标签:pre 个数 范围 leetcode 并且 返回 示例 coin elf
问题描述:
你总共有 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
标签:pre 个数 范围 leetcode 并且 返回 示例 coin elf
原文地址:https://www.cnblogs.com/NPC-assange/p/9740962.html