目录结构
1.题目
你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。
给定一个数字 n,找出可形成完整阶梯行的总行数。
n 是一个非负整数,并且在32位有符号整型的范围内。
示例:
n = 5
硬币可排列成以下几行:
¤
¤ ¤
¤ ¤
因为第三行不完整,所以返回2.
n = 8
硬币可排列成以下几行:
¤
¤ ¤
¤ ¤ ¤
¤ ¤
因为第四行不完整,所以返回3.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/arranging-coins
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.题解
由题设,n为公差1首项1的等差数列前k项和或介于k项和于k+1项和之间。又ak =k(k+1)/2,故可反解k的值向下取整。
public class Solution441 {
@Test
public void test441(){
System.out.println(arrangeCoins(1804289383));
}
public int arrangeCoins(int n) {
return (int) ((Math.sqrt(1+(long)n*8)-1)/2);
}
}
- 时间复杂度:
- 空间复杂度: