1. 程式人生 > 其它 >LeetCode 441——排列硬幣

LeetCode 441——排列硬幣

技術標籤:LeetCode刷題

一、題目介紹

你總共有n枚硬幣,你需要將它們擺成一個階梯形狀,第k行就必須正好有k枚硬幣。

給定一個數字n,找出可形成完整階梯行的總行數。

n是一個非負整數,並且在32位有符號整型的範圍內。

示例 1:

n = 5

硬幣可排列成以下幾行:
¤
¤ ¤
¤ ¤

因為第三行不完整,所以返回2.
示例 2:

n = 8

硬幣可排列成以下幾行:
¤
¤ ¤
¤ ¤ ¤
¤ ¤

因為第四行不完整,所以返回3.

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/arranging-coins
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

二、解題思路

簡單的數學題,從1到N依次相加,如果相加的和sum與給定數值n之差大於N+1的話,則繼續進行相加,直到sum-n < N+1為止,返回N,詳見程式碼。

三、解題程式碼

class Solution {
public:
    int arrangeCoins(int n) {
        int i = 0;
        while(n >= i)
        {
            n -= (i++);
        }
        return i-1;
    }
};

四、解題結果