441. Arranging Coins

来源:互联网 发布:数据报表分析 编辑:程序博客网 时间:2024/06/05 06:01

ou have a total of n coins that you want to form in a staircase shape, where every k-th row must have exactly k coins.

Given n, find the total number of full staircase rows that can be formed.

n is a non-negative integer and fits within the range of a 32-bit signed integer.

Example 1:

n = 5The coins can form the following rows:¤¤ ¤¤ ¤Because the 3rd row is incomplete, we return 2.

Example 2:

n = 8The coins can form the following rows:¤¤ ¤¤ ¤ ¤¤ ¤Because the 4th row is incomplete, we return 3.
public class Solution {    public int arrangeCoins(int n) {        long nlong = (long)n;        long start = 0;        long end = nlong;                while(start<=end){            long mid = start+(end-start)/2;            if(mid*(mid+1)<=2*nlong) start = mid+1;            else end=mid-1;        }        return (int)(start-1);    }}

高斯定理:1+2+3.。。。+n=n*(n+1)/2

所以在这里应该要找到一个k使得k*(k+1)<=2n即可

其中要注意long的定义

还有mid的值是如何定义的










0 0