441. Arranging Coins
来源:互联网 发布:网络协议是什么意思 编辑:程序博客网 时间:2024/05/19 12:38
问题:
You have a total of n coins that you want to form in a staircase shape, where every k-th row must have exactly k coins.
Given n, find the total number of full staircase rows that can be formed.
n is a non-negative integer and fits within the range of a 32-bit signed integer.
Example 1:
n = 5
The coins can form the following rows:
¤
¤ ¤
¤ ¤Because the 3rd row is incomplete, we return 2.
Example 2:
n = 8
The coins can form the following rows:
¤
¤ ¤
¤ ¤ ¤
¤ ¤Because the 4th row is incomplete, we return 3.
大意:
你有n枚硬币,想要用来组成一个完整的楼梯,每一层都要有层数对应的硬币数。
给出n,返回可以组成的完整楼梯的层数。
n是一个非负数,且满足32位int的范围。
例1:
n = 5
硬币可以组成下面的行:
¤
¤ ¤
¤ ¤因为第三层是不完整的,所以我们返回2。
Example 2:
n = 8
硬币可以组成下面的行:
¤
¤ ¤
¤ ¤ ¤
¤ ¤因为第四行是不完整的,所以我们返回3。
思路:
这道题要用硬币去一层层堆楼梯。其实很容易想到累加和。
题目的意思其实就是从1~x层完整楼梯硬币数量加起来,要小于等于n,求最大的x。说到加起来的数量,很容易想到求累加和,我们知道求累加和的公式为:
sum = (1+x)*x/2
这里就是要求 sum <= n 了。我们反过来求层数x。如果直接开方来求会存在错误,必须因式分解求得准确的x值:
(1+x)*x/2 <= n
x + x*x <= 2*n
4*x*x + 4*x <= 8*n
(2*x + 1)*(2*x + 1) - 1 <= 8*n
x <= (sqrt(8*n + 1) - 1) / 2
其中Math.sqrt()是求平方根的函数。这样我们就求出了x,最后要记得强制转换为int型数。
代码(Java):
- 1
- 2
- 3
- 4
- 5
- LeetCode 441. Arranging Coins
- 441. Arranging Coins
- 441. Arranging Coins
- 441. Arranging Coins
- 441. Arranging Coins
- LeetCode 441. Arranging Coins
- 441. Arranging Coins
- 441. Arranging Coins
- leetcode 441. Arranging Coins
- 441. Arranging Coins
- Leetcode: 441. Arranging Coins
- LeetCode 441. Arranging Coins
- 441. Arranging Coins
- 【LeetCode】 441. Arranging Coins
- LeetCode 441. Arranging Coins
- [leetcode]441. Arranging Coins
- 441. Arranging Coins
- 441. Arranging Coins*
- python tkinter 窗口最大化
- 注销键盘的几种方式
- Python 文件处理
- 用gcc编译c语言(编译和警告处理)
- 破解百度网盘 -- 使下载速度增加20倍
- 441. Arranging Coins
- 初识数字图像处理(一)
- lua脚本学习6
- c++引用
- HDU 5144 NPY and shot 三分(物理)
- Windows系统中双击.py文件可以直接运行
- The C Programming Language 练习题2-10
- 如何读取properties文件
- 1053. 住房空置率 (20)