总共有 n
枚硬币,将它们摆成一个阶梯形状,第
k
行就必须正好有
k
枚硬币。给定一个数字
n
,找出可形成完整阶梯行的总行数。
public static void main(String[] args) {
// System.out.println(arrangeCoins(15));
System.out.println(arrangeCoins(21));
}
//迭代
private static int arrangeCoins(int n) {
for (int i = 1; i <= n; i++) {
n=n-i;
if (n<=i)return i;
}
return 0;
}
//二分查找
private static int binarySearch(int n){
int low=1,high=n;
while (low<=high){
long mid=low+(high-low)/2;
long sum=(mid+1)*mid/2;//总和
if (sum==n){
return (int) mid;
}else if (sum>n){
high= (int) (mid-1);
}else {
low= (int) (mid+1);
}
}
return high;
}