Leetcode 解析 (441. Arranging Coins)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Leetcode 解析 (441. Arranging Coins)

闲来无事刷道题呗。


1668568518318.jpg


题目介绍


简单的说,假如你有 N 枚硬币,需要摆成阶梯的形式,即第 N 行一定有 N 个硬币。求最多能摆多少行。


题目分析


最直观的解法,因为我们知道第 N 行必须要需要 N 个硬币。所以我们只要从第一行开始,每加一行减掉对应所需 X 个。什么时候总数不够了,那么游戏到此结束。


解法一

/**
     * @param Integer $n
     * @return Integer
     */
    function arrangeCoins($n)
{
        $i = 1;
        if ($n == 0) return 0;
        while ($n > 0) {
            $n -= $i;
            $i++;
            if ($n < $i) return $i - 1;
        }
    }

这种解法时间复杂度 O (n),空间复杂度 O (1)。空间复杂度无需再优化了,可以看看能否在时间上动动手脚。


解法二


这时间上优化先看看从 O (n) 到 O (log2n) 。台阶 1-n ,本质上就是一个有序的集合,既然是有序,当然就可以用到 Binary Search 的思想。每次找到中位数,计算中位数 m (即第 m 行) 所需要的硬币总和和给定的硬币数进行比较,不断压缩空间。

/**
     * @param Integer $n
     * @return Integer
     */
    function arrangeCoins($n)
    {
        $left = 0;
        $right = $n;
        while ($left < $right) {
            $middle = $left + (($right - $left + 1) >> 1);
            //$middleSum=($middle*$middle+$middle)/2;
            $middleSum = $middle * ($middle + 1) / 2;
            if ($middleSum <= $n) {
                $left = $middle;
            } else {
                $right = $middle - 1;
            }
        }
        return $left;
    }
相关文章
|
3月前
|
存储 算法 数据挖掘
深入解析力扣168题:Excel表列名称(进制转换法详解及模拟面试问答)
深入解析力扣168题:Excel表列名称(进制转换法详解及模拟面试问答)
|
3月前
|
存储 算法 数据挖掘
深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)
深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)
|
3月前
|
存储 算法 数据可视化
【模拟面试问答】深入解析力扣163题:缺失的区间(线性扫描与双指针法详解)
【模拟面试问答】深入解析力扣163题:缺失的区间(线性扫描与双指针法详解)
|
3月前
|
存储 算法 数据可视化
【模拟面试问答】深入解析力扣164题:最大间距(桶排序与排序方法详解)
【模拟面试问答】深入解析力扣164题:最大间距(桶排序与排序方法详解)
|
3月前
|
算法 数据可视化 数据挖掘
深入解析力扣162题:寻找峰值(线性扫描与二分查找详解)
深入解析力扣162题:寻找峰值(线性扫描与二分查找详解)
|
3月前
|
SQL 算法 大数据
深入解析力扣184题:部门工资最高的员工(子查询与窗口函数详解)
深入解析力扣184题:部门工资最高的员工(子查询与窗口函数详解)
|
3月前
|
SQL 算法 数据挖掘
深入解析力扣183题:从不订购的客户(LEFT JOIN与子查询方法详解)
深入解析力扣183题:从不订购的客户(LEFT JOIN与子查询方法详解)
|
3月前
|
SQL 算法 大数据
深入解析力扣176题:第二高的薪水(子查询与LIMIT详解及模拟面试问答)
深入解析力扣176题:第二高的薪水(子查询与LIMIT详解及模拟面试问答)
|
3月前
|
算法 数据挖掘 大数据
深入解析力扣172题:阶乘后的零(计算因子5的方法详解及模拟面试问答)
深入解析力扣172题:阶乘后的零(计算因子5的方法详解及模拟面试问答)
|
3月前
|
算法 数据挖掘 大数据
深入解析力扣171题:Excel表列序号(进制转换法详解及模拟面试问答)
深入解析力扣171题:Excel表列序号(进制转换法详解及模拟面试问答)

推荐镜像

更多