carloscn / structstudy

Leetcode daily trainning by using C/C++/RUST programming.
4 stars 1 forks source link

leetcode441:排列硬币(arranging-coins) #98

Open carloscn opened 1 year ago

carloscn commented 1 year ago

问题描述

你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。

给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。

示例 1: image

输入:n = 5 输出:2 解释:因为第三行不完整,所以返回 2 。

示例 2: image

输入:n = 8 输出:3 解释:因为第四行不完整,所以返回 3 。

提示: 1 <= n <= 231 - 1

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/arranging-coins

carloscn commented 1 year ago

问题分析

循环递减就可以了

static size_t arrange_coins(size_t n)
{
    size_t i = 1;
    size_t k = 0;

    while (n > i) {
        k ++;
        n -= i;
        i += k;
    }

    return k;
}
carloscn commented 1 year ago

code:

https://github.com/carloscn/structstudy/blob/master/c_programming/common/14_arranging-coins_441.c

result:

image