力扣 题目69- x 的平方根
题目
题解
二分搜索法 但是不同的是我们每次要与中间的平方比较
代码
1 #include<iostream> 2 using namespace std; 3 class Solution { 4 public: 5 int mySqrt(int x) { 6 if (x == 1) { 7 return 1; 8 } 9 int min = 0; 10 int max = x; 11 //如果max和min交叉 12 while (max - min > 1) 13 { 14 //更新中间 15 int middle = (min + max) / 2; 16 //防止int 溢出 17 if (x / middle < middle) { 18 max = middle; 19 } 20 else 21 { 22 min = middle; 23 } 24 } 25 return min; 26 } 27 }; 28 29 int main() { 30 Solution sol; 31 INT_MAX; 32 int result=sol.mySqrt(2147395599); 33 cout << result << endl; 34 35 }