441. 排列硬币https://leetcode.cn/problems/arranging-coins/
难度简单218
你总共有 n
枚硬币,并计划将它们按阶梯状排列。对于一个由 k
行组成的阶梯,其第 i
行必须正好有 i
枚硬币。阶梯的最后一行 可能 是不完整的。
给你一个数字 n
,计算并返回可形成 完整阶梯行 的总行数。
示例 1:
输入:n = 5 输出:2 解释:因为第三行不完整,所以返回 2 。
示例 2:
输入:n = 8 输出:3 解释:因为第四行不完整,所以返回 3 。
提示:
1 <= n <= 231 - 1
通过次数93,907提交次数205,273
常规写法:
时间复杂度O(n)
class Solution {
public int arrangeCoins(int n) {
long ans = 0;
for(int i=1;i<=n;i++)
{
if((ans+i)==n) return i;
if((ans+i)>n) return i-1;
ans+=i;
}
return 0;
}
}
方法二:简单迭代,逆向思维
class Solution {
public int arrangeCoins(int n) {
//简单迭代,逆向思维
int i = 0;
while(n>i) n -= ++i;
return i;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/69087.html