京东网上购物官方网站,icp网站,网站制作宣传,网络广告文案1. 题目
你总共有 n 枚硬币#xff0c;你需要将它们摆成一个阶梯形状#xff0c;第 k 行就必须正好有 k 枚硬币。
给定一个数字 n#xff0c;找出可形成完整阶梯行的总行数。
n 是一个非负整数#xff0c;并且在32位有符号整型的范围内。
示例 1:
n 5
硬币可排列成以下…1. 题目
你总共有 n 枚硬币你需要将它们摆成一个阶梯形状第 k 行就必须正好有 k 枚硬币。
给定一个数字 n找出可形成完整阶梯行的总行数。
n 是一个非负整数并且在32位有符号整型的范围内。
示例 1:
n 5
硬币可排列成以下几行:
¤
¤ ¤
¤ ¤
因为第三行不完整所以返回2.示例 2:
n 8
硬币可排列成以下几行:
¤
¤ ¤
¤ ¤ ¤
¤ ¤
因为第四行不完整所以返回3.来源力扣LeetCode 链接https://leetcode-cn.com/problems/arranging-coins 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
模拟法不断往下加
class Solution {
public:int arrangeCoins(int n) {int i 1, line 0;long sum 0;while(sum n){sum i;i;line;}if(sum n)return line-1;return line;}
};12 ms 8.3 MB
数学方法解方程 等差数列求和 x(x1)/2nx(x1)/2 nx(x1)/2n, x((8n1)−1)/2x (\sqrt{(8n1)}-1)/2x((8n1)−1)/2
class Solution {
public:int arrangeCoins(int n) {long x (pow(1(long(n)3),0.5)-1)/2;long sum x*(x1)/2;if(sum n)return x-1;return x;}
};0 ms 6.1 MB