Leetcode第441題 排列硬幣

2021-09-10 02:55:13 字數 1112 閱讀 8683

你總共有 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 硬幣可排列成以下幾行 因...