LeetCode笔记:441. Arranging Coins
来源:互联网 发布:ajax 异步获取数据 编辑:程序博客网 时间:2024/05/29 05:58
问题:
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):
public class Solution { public int arrangeCoins(int n) { return (int)((Math.sqrt(8*(long)n + 1) - 1)/2); }}
合集:https://github.com/Cloudox/LeetCode-Record
版权所有:http://blog.csdn.net/cloudox_
- LeetCode笔记:441. Arranging Coins
- LeetCode 441. Arranging Coins
- LeetCode 441. Arranging Coins
- leetcode 441. Arranging Coins
- Leetcode: 441. Arranging Coins
- LeetCode 441. Arranging Coins
- 【LeetCode】 441. Arranging Coins
- LeetCode 441. Arranging Coins
- [leetcode]441. Arranging Coins
- LeetCode 441. Arranging Coins
- Leetcode 441. Arranging Coins
- leetcode-441. Arranging Coins
- [LeetCode]441. Arranging Coins
- LeetCode-441. Arranging Coins
- 【LeetCode】441. Arranging Coins
- [LeetCode]441. Arranging Coins
- 【Leetcode】441. Arranging Coins
- [leetcode]: 441. Arranging Coins
- centos6 repo
- Linux 命令总结
- Web应用跨域访问解决方案
- Web实时消息后台服务器推送技术GoEasy(支持多语言)---附GoEasy web 推送实例
- 比较详细Python正则表达式操作指南(re使用)
- LeetCode笔记:441. Arranging Coins
- SP/DP/PX相互转换
- 图像处理结果的度量 —— SNR、PSNR、SSIM
- java 软件加密
- 【Data Structures】 4. LinkedList
- Volley源码解析
- python 操作Excel
- TCP/IP流
- http请求和响应