leetcode 排列硬幣

2021-10-07 15:19:15 字數 648 閱讀 2609

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

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

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

示例1:n = 5

硬幣可排列成以下幾行:

¤ 第一行

¤ ¤ 第二行

¤ ¤ …

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

按照題的意思是n枚硬幣是按照1,2,3…n這樣放置的問n枚硬幣能放置多少行,相當於查詢key行這個值在行構成的陣列的哪個位置,返回離key最近的可構成完整的等差數列的函式,使用二分查詢法查詢,在key行時,等差數列的sum=(1+key)key/2與n值比較大小,具體的看**

var

arrangecoins

=function

(n)var left=0;

var right=n;

var sum=0;

while

(left<=right)

else

if(sum>n)

else

}return right right是最靠近mid值,並且可構成完整等差數列的值

};

Leetcode第441題 排列硬幣

你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。給定乙個數字 n,找出可形成完整階梯行的總行數。n 是乙個非負整數,並且在32位有符號整型的範圍內。示例 1 n 5 硬幣可排列成以下幾行 因為第三行不完整,所以返回2.示例 2 n 8 硬幣可排列成以下幾行 因...

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