leetcode-441. 排列硬币-C语言

/*
 * 算法思想:二分法
 */

long long get(long long n){
    return n*(n+1)/2;
}

int arrangeCoins(int n){
    int i=0, j = n, mid;
    long long tmp1;

    while(i<j) {
        mid = i+(j-i)/2;
        
        tmp1 = get(mid+1);
        
        if(tmp1 > n){
            j = mid;
        }else if(tmp1 < n) {
            i = mid + 1;
        }else {
            return mid+1;
        }
    }
    
    return i;
}


猜你喜欢

转载自blog.csdn.net/weixin_36094222/article/details/93643568