Lecode简单系列之441

题目描述:
排列硬币,第一行一个,第二行两个。以此类推。
求能排列多少行。
代码:
public static int arrangeCoins(int n) {
int sum=0;
int count=0;
if(n==1)
return 1;
for (int i = 1; i <=n ; i++) {
sum+=i;
if (sum>n){
count= i-1;
break;
}

    }
    return count;
}
超出时间限制。
另一种方法:
利用等差数列的求和公式
public int arrangeCoins(int n) {
    return (int) (Math.sqrt((long) n * 2 + 0.25) - 0.5);
}

Lecode简单系列之441_第1张图片

你可能感兴趣的:(算法练习,Java小白的成长之路)