每天一道LeetCode-----重新实现开方运算sqrt(x),只返回整数部分即可
生活随笔
收集整理的這篇文章主要介紹了
每天一道LeetCode-----重新实现开方运算sqrt(x),只返回整数部分即可
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Sqrt(x)
原題鏈接Sqrt(x)
重新實現開方運算。
因為要求實現的開方運算只需要返回整數部分即可,所以首先考慮一下當n為多少時可以返回。
n是給定x的開方結果一定滿足
- n * n <= x
- (n + 1) * (n + 1) > x
所以可以從這兩點入手,同時,因為結果可以是[1, x]范圍任意一個數字,所以可以利用二分法加快執行速率
代碼如下
class Solution { public:int mySqrt(int x) {int low = 0;int high = x;while(low < high){/* 這里最好用low + (high - low) / 2計算中位數,否則low + high容易溢出 *//* 另外middle最好是long long int類型,因為middle * middle也容易溢出 */long long int middle = low + (high - low) / 2;if(middle * middle <= x && (middle + 1) * (middle + 1) > x)return middle;else if(middle * middle > x)high = middle - 1;elselow = middle + 1;}return low;} };總結
以上是生活随笔為你收集整理的每天一道LeetCode-----重新实现开方运算sqrt(x),只返回整数部分即可的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每天一道LeetCode-----将单词
- 下一篇: 每天一道LeetCode-----找到有