封面画师あずーる
twitter:@azure_0608_sub
题目地址 :https://leetcode-cn.com/problems/arranging-coins/
排列硬币
你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。
给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。
迭代法非常直观,直接循环减行数即可
func arrangeCoins(n int) int {
i := 0
for{
if n < i {
return i-1
}
n -= i
i++
}
}
数学法为高中数学,先求出差为1的等差数列 (x+1)*(x/2)=n的正根,然后输出一个不大于x的整数即可
func arrangeCoins(n int) int {
return int(math.Trunc((-1+math.Sqrt(float64(8*n+1)))/2))
}
Comments NOTHING