leetcode(8)排列硬幣的js實現
阿新 • • 發佈:2019-01-08
一.題目描述:
你總共有 n 枚硬幣,你需要將它們擺成一個階梯形狀,第 k 行就必須正好有 k 枚硬幣。
給定一個數字 n,找出可形成完整階梯行的總行數。
n 是一個非負整數,並且在32位有符號整型的範圍內。
示例 1:
n = 5
硬幣可排列成以下幾行:
¤
¤ ¤
¤ ¤
因為第三行不完整,所以返回2.
示例 2:
n = 8
硬幣可排列成以下幾行:
¤
¤ ¤
¤ ¤ ¤
¤ ¤
因為第四行不完整,所以返回3.
二.js程式碼實現:
1.實現思路:
(1)第一種直接對n進行開放取整為m,對m*(m+1)/2進行判斷就好
(2)第二種方法一個變數計數,一個變數計算值的和,再進行判斷返回計數的值
2.js程式碼實現:
(1)簡單實現:
/**
* @param {number} n
* @return {number}
*/
var arrangeCoins = function(n) {
let m = Math.floor(Math.sqrt(2*n));
if(n>=m*(m+1)/2)
{
return m;
}
else
{
return m-1;
}
};
(2)普通實現:
/** * @param {number} n * @return {number} */ var arrangeCoins = function(n) { let count = 0; let sum = 0; while(true){ sum = sum +count+1 if(sum > n){ break; } count++; } return count; };