LeetCode每日一题|441. 排列硬币

169 阅读1分钟
  • 题目描述

题目链接:leetcode-cn.com/problems/ar… image.png

  • 思路分析

l行阶梯可以放(1+l)l2\cfrac {(1+l)l}2个硬币,所以n个硬币最少需要1+8n12\cfrac{\sqrt{1+8n}-1}2

l2+l2n  0l^2+l-2n\ \ge\ 0
l  1+8n12l\ \ge\ \cfrac{\sqrt{1+8n}-1}2

由于最后一行若是不完整则不算在阶梯内,所以使用向下取整,每次返回1+8n12\lfloor \cfrac{\sqrt{1+8n}-1}2 \rfloor

  • 代码

var arrangeCoins = function (n) {
  return Math.floor((Math.sqrt(1 + 8 * n) - 1) / 2);
};