LeetCode力扣刷题:441.排列硬币
LeetCode力扣刷题:441.排列硬币
暴力法解决如下:
int arrangeCoins(int n){int line=0,m=n;while(true){line++;m=m-line;if(m<=line)break;}return line;
}
12 ms 5.4 MB
使用等差数列求和公式版的暴力法:
完整的等差数列求和必然是 (n+1)*n/2
使用这个算式需要考虑内存溢出的情况,所以对line的申请要用long
int arrangeCoins(int n){long line =0;while(true){line++;if( (line+1)*line/2 >n)break;}return line-1;
}
执行用时:
16 ms, 在所有 C 提交中击败了21.45%的用户
内存消耗:
5.5 MB, 在所有 C 提交中击败了30.69%的用户
看评论区见到的一种暴力法,与我的第一种方法思想差不多
int arrangeCoins(int n) {int tmp = n;if(n==1)return 1;for (int i = 1; i <= tmp; ++i) {n -= i;if (n < 0) {return i - 1;}}return 0;
}
二分法的解答看了一些,感觉不如我的暴力法[doge]
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
