题目链接:441.排列硬币
题意:
你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。
给定一个数字 n,找出可形成完整阶梯行的总行数。
n 是一个非负整数,并且在32位有符号整型的范围内
解题思路:
因为第 k 行必须有 k枚硬币,所以很简单的看出一个等差数列
2 * n = m + m * m
判断如果m+m*m <= 2 * n,那么说明,有m行完整,否则m-1行完整
class Solution {
/**
* @param Integer $n
* @return Integer
*/
function arrangeCoins($n) {
$a = intval(sqrt($n * 2));
if($a + $a * $a <= 2 * $n){
return $a;
}
else {
return $a-1;
}
}
}