力扣 题目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 }
View Code
posted @ 2022-06-08 09:50  无聊的阿库娅  阅读(6)  评论(0编辑  收藏  举报