你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。
給定乙個數字 n,找出可形成完整階梯行的總行數。
n 是乙個非負整數,並且在32位有符號整型的範圍內。
示例 1:
n = 5
硬幣可排列成以下幾行:
¤¤ ¤
¤ ¤因為第三行不完整,所以返回2.
示例 2:
n = 8
硬幣可排列成以下幾行:
¤¤ ¤
¤ ¤ ¤
¤ ¤因為第四行不完整,所以返回3.
很快就可以想到連續數列的前n項和n*(n+1)/2。
n==5時:
i=1i=2
i=3n>i
n>i
nn:=n-i=4
n:=n-i=2
return 2
n==8時:
i=1i=2
i=3i=4
n>i
n>i
n>i
nn:=n-i=7
n:n-i=5
n:=n-i=2
return 3
class solution
//剩餘的可能剛好排滿
//也可能排不滿
if(n==i)
return i;
else
return i-1;
}};
class
solution
:def
arrangecoins
(self, n):if
(n==0)
:return0;
elif
(n==1)
:return1;
i=1while n>i:
#先排第i行
n=n-i
#繼續排下一行
i=i+
1#剩餘的可能剛好排滿第i行
if(n==i)
:return i
#也可能無法排滿
else
:return i-
1
(同樣的演算法思想,python的執行效率這也太低了吧…) leetcode刷題之441 排列硬幣
示例 1 n 5 硬幣可排列成以下幾行 因為第三行不完整,所以返回2.示例 2 n 8 硬幣可排列成以下幾行 因為第四行不完整,所以返回3class solution object defarrangecoins self,n type n int rtype int i 1while n 0 if...
LeetCode 441 排列硬幣
你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。給定乙個數字 n,找出可形成完整階梯行的總行數。n 是乙個非負整數,並且在32位有符號整型的範圍內。執行用時 36ms 記憶體消耗 14mb 題後反思 這個時候就看出數學的用處了,一句話就可以代替注釋中的全部內容...
LeetCode 441 排列硬幣
你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。給定乙個數字 n,找出可形成完整階梯行的總行數。n 是乙個非負整數,並且在32位有符號整型的範圍內。示例 1 n 5 硬幣可排列成以下幾行 因為第三行不完整,所以返回2.示例 2 n 8 硬幣可排列成以下幾行 因...