本文主要是介绍LeetCode - 441,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:https://leetcode.com/problems/arranging-coins/
这个题嘛,就是第i行都有i个硬币,然后给出总的硬币数n,问最多能到第几行。
其实吧,就是等差数列之和,与n进行比较。
这题一开始我是这么想的,当l = r的时候,循环跳出来的mid就是答案。但是吧,各种卡壳。后来发现, n >= total的时候,就可以记录答案,循环跳出来的时候,最终结果就是正确答案了。但是有例外,当n=1和n=0的时候,要单独写。
int arrangeCoins(int n) {int l = 1,r = n;long long int total,mid;int ans = -1;while(l < r){mid = l + (r - l)/2;total = mid * (1 + mid) / 2;if(n < total){r = mid;}else if(n >= total){l = mid + 1;ans = mid;}}if(ans = -1){if(n == 1) ans = 1;else ans = 0;}return ans;
}
绕来绕去的解题过程文字,可能就我自己看懂了吧。
这篇关于LeetCode - 441的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!