你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。
給定乙個數字 n,找出可形成完整階梯行的總行數。
n 是乙個非負整數,並且在32位有符號整型的範圍內。
示例 1:
n = 5
硬幣可排列成以下幾行:
¤¤ ¤
¤ ¤因為第三行不完整,所以返回2.
示例 2:
n = 8
硬幣可排列成以下幾行:
¤¤ ¤
¤ ¤ ¤
¤ ¤因為第四行不完整,所以返回3.
思路:從1開始,加到第k行,第k行有k個硬幣,所以總的硬幣數為: (1+k)*k/2 <= n; 解二元一次方程, 捨棄負數,只保留正數: k = (-1+sqrt(1+4*2*n) )/2,8n會溢位,2n也會溢位,所以對n前面新增 long型別,所以取出乙個2,k = (-1+sqrt(1.0/4+2*(long)n) ),。 也可以用迴圈解,sum <=n 即可。
class solution
};
LeetCode 441 排列硬幣
你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。給定乙個數字 n,找出可形成完整階梯行的總行數。n 是乙個非負整數,並且在32位有符號整型的範圍內。執行用時 36ms 記憶體消耗 14mb 題後反思 這個時候就看出數學的用處了,一句話就可以代替注釋中的全部內容...
leetcode 441 排列硬幣(數學)
排列硬幣 category difficulty likes dislikes algorithms easy 39.48 42 br companies unknown 你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。給定乙個數字 n,找出可形成完整階梯行的...
leetcode 441 排列硬幣(python)
1.題目描述 你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。給定乙個數字 n,找出可形成完整階梯行的總行數。n 是乙個非負整數,並且在32位有符號整型的範圍內。示例 1 n 5 硬幣可排列成以下幾行 因為第三行不完整,所以返回2.示例 2 n 8 硬幣可排列...