441. 排列硬币 [二分]

Posted 霜序0.2℃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了441. 排列硬币 [二分]相关的知识,希望对你有一定的参考价值。

题目

你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。

给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。

示例 1:

输入:n = 5
输出:2
解释:因为第三行不完整,所以返回 2 。
示例 2:

输入:n = 8
输出:3
解释:因为第四行不完整,所以返回 3 。

提示:

1 <= n <= 231 - 1

解释与代码

二分解法

x*(x+1)/2就是1到x的累加和,这样可以用二分来写

class Solution 
public:
    long long fx(long long x) 
        return x * (x + 1) / 2;
    
    int arrangeCoins(int n) 
        long long l = 0, r = n;
        while (l < r) 
            long long mid = l + r + 1>> 1;
            if (fx(mid) <= n) 
                l = mid;
             else 
                r = mid - 1;
            
        
        return l;
    
;

以上是关于441. 排列硬币 [二分]的主要内容,如果未能解决你的问题,请参考以下文章

441. 排列硬币 [二分]

leetcode 441. 排列硬币(Arranging Coins)

leetcode打卡--441. 排列硬币

leetcode441. 排列硬币

Leetcode刷题100天—441. 排列硬币(数学)—day62

Leetcode刷题100天—441. 排列硬币(数学)—day62