长春到四平,网络优化的三个方法,wordpress添加注册,像饿了码的网站建站有吗题意#xff1a;
你总共有 n 枚硬币#xff0c;并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯#xff0c;其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。
给你一个数字 n #xff0c;计算并返回可形成 完整阶梯行 的总行数。
示例 1#xff…题意
你总共有 n 枚硬币并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。
给你一个数字 n 计算并返回可形成 完整阶梯行 的总行数。
示例 1 输入n 5 输出2 解释因为第三行不完整所以返回 2 。 示例 2 输入n 8 输出3 解释因为第四行不完整所以返回 3 。 提示
1 n 231 - 1
题目来源 https://leetcode.cn/problems/arranging-coins/description/
解题方法
方法一迭代递减
//迭代递减
function arrangeCoins($n) {for($i 1; $i $n; $i){$n - $i;if($n 0 || $n $i1){return $i;}}
}方法二二分法利用
// 等差数列{an}的通项公式为ana1(n-1)d。前n项和公式为Snn*a1n(n-1)d/2或Snn(a1an)/2,d为公差
function arrangeCoins($n) {if($n 1 || $n 2){return 1;}$start 1;$end $n;while($start $end){$mid $start intval(($end - $start 1) / 2);$sum ($mid * ($mid 1)) / 2; //Snn(a1an)/2 n$mid, a11, an$midif($sum $n){$end $mid - 1;}else{$start $mid;}}return $start;
}方法三数学一元二次方程求根 // 数学一元二次方程求根
function arrangeCoins($n) {return intval((pow(8 * $n 1, 0.5) - 1) / 2);
}参考 作者力扣官方题解 链接https://leetcode.cn/problems/arranging-coins/solutions/1038396/pai-lie-ying-bi-by-leetcode-solution-w52c/ 来源力扣LeetCode