zoukankan      html  css  js  c++  java
  • LeetCode--441--排列硬币

    问题描述:

    你总共有 枚硬币,你需要将它们摆成一个阶梯形状,第 行就必须正好有 枚硬币。

    给定一个数字 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

  • 相关阅读:
    [HNOI2013]切糕
    [POI2015]Kinoman
    「NOI2014」动物园
    [ZJOI2006]书架
    [HEOI2015]定价
    bzoj1833 数字计数
    bzoj2565 最长双回文子串
    bzoj4198 荷马史诗
    bzoj1193 马步距离
    bzoj3329 Xorequ
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/9740962.html
Copyright © 2011-2022 走看看