題目
連結
LeetCode 69[x的平方根]
詳情
例項
提示
題解
思路
由於所求的是整型且是正符號整型,可以採取迴圈遍歷的方式來求取平方根
用 for 迴圈將 i 由 0 開始遍歷,求平方值
當平方值小於指定值,此時迴圈繼續
直到以下兩種情況時退出迴圈:
- 當平方值為指定值時,返回 i
- 當平方值大於指定值時,返回 i - 1
當 i 為有符號整型時,其遍歷到 46341 時,平方值為 2147488281 ,但是力扣官方的 int 值的範圍最大值為 2147483647,故其會溢位,所以 i 應該設定為 unsigned int 型
程式碼
class Solution {
public:
int mySqrt(int x) {
for (unsigned int i = 0;;i++)
{
if (x == i * i)
return i;
if (i * i > x)
return i - 1;
}
}
};