ArrangeCoins题目描述:你一共有n个硬币,你需要将它们排成阶梯状,并且第k行恰好有k个硬币。给定一个数字n,找出构成完整阶梯行的总行数。n为32位有符号整数范围内的非负整数。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:穷举法简单累加,直到大于n,最后返回对应的层数。这种方法效率太低,当n很大时会超时。解法二:二分查找法首先,上下限low和high分别为最大和最小层数,根据n=x*(x+1)/2估计最大值,然后使用二分查找法求出第二层最多可以放几层,最后返回层数。publicclassLeetCode_441{/***穷举法,n太大时会超时,效率不高**@paramn*@return*/publicstaticintarrangeCoins(intn){intsum=0,行数=0;for(inti=1;;i++){if(sum+i>n){中断;}总和+=我;行++;}返回行;}/***二分查找法**@paramn*@return*/publicstaticintarrangeCoins2(intn){//low和high分别是最大和最小层数,最大值根据`n估计=x*(x+1)/2`intlow=1,high=(int)Math.sqrt(Double.valueOf(Integer.MAX_VALUE)*2),mid=-1;//使用二分查找法找到可以放置的最大层级while(low<=high){mid=(low+high)/2;双温度=(双)中*(中+1)/2;如果(温度>n){高=中-1;}elseif(temp
