2023-01-29 12:54阅读: 20评论: 0推荐: 0

力扣-69- x 的平方根

自行实现某个数学函数…我记得《剑指Offer》也有这种题

第一想法是从0开始,看i*ix的大小比较,如果i*i<x && (i+1)*(i+1)>x那就是答案

但是这样很明显时间复杂度太高了,如果x很大,一个一个i*i地算肯定会超时
于是就有了经典的 二分查找

好吧一下子我还不知道怎么写😂

官解一我感觉还真不太行,做个变形,而且不是不让用函数吗,而且这也不是面试官想要考察的点吧,看了直摇头

class Solution {
public:
int mySqrt(int x) {
// 从0-x进行二分查找
int left = 0, right = x, ans = -1;
int mid = x / 2;
while (left <= right) {
int mid = (left + right) / 2;
// 这里可能溢出
if ((long long)mid * mid <= x) {
// 注意这里结果是写在小于等于中的,并且每次都会被刷新
ans = mid;
left = mid + 1;
}
else right = mid - 1;
}
return ans;
}
};

方法三可以比二分更快地迭代,但是我高数没学好😂下次一定

本文作者:YaosGHC

本文链接:https://www.cnblogs.com/yaocy/p/17072037.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   YaosGHC  阅读(20)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起