当前位置:网站首页>leetcode 072. Finding Square Roots
leetcode 072. Finding Square Roots
2022-08-03 20:11:00 【Luna who can program】
给定一个非负整数 x ,计算并返回 x 的平方根,即实现 int sqrt(int x) 函数.
正数的平方根有两个,只输出其中的正数平方根.
如果平方根不是整数,输出只保留整数的部分,小数部分将被舍去.
示例 1:
输入: x = 4
输出: 2
示例 2:
输入: x = 8
输出: 2
解释: 8 的平方根是 2.82842…,由于小数部分将被舍去,所以返回 2
提示:
0 <= x <= 231-1
思路:二分
c++
class Solution {
public:
int mySqrt(int x) {
long long left=0,right=x,ans,mid;
while(left<=right){
mid=left+(right-left)/2; //和 mid=(right+left)/2 等价,但是 left+right 可能会溢出
if((long long)mid*mid<=x){
//mid*mid 也可能会溢出,所以用 long long
ans=mid;
left=mid+1;
}
else
right=mid-1;
}
return ans;
}
};
python
class Solution:
def mySqrt(self, x: int) -> int:
left,right,ans=0,x,0
while left<=right:
mid=(left+right)//2
if mid**2<=x:
ans=mid
left=mid+1
else:
right=mid-1
return ans
牛顿迭代:
c++:
class Solution {
public:
int mySqrt(int x) {
if(x==0) //Avoid the following denominator as0的情况
return 0;
double x0=x,c=x,xi;
while(1){
xi=(x0+c/x0)/2;
if(fabs(x0-xi)<1e-7)
break;
x0=xi;
}
return x0;
}
};
python:
class Solution:
def mySqrt(self, x: int) -> int:
if x==0:
return 0
x0,c=float(x),float(x)
while 1:
xi=(x0+c/x0)/2
if abs(xi-x0)<1e-7:
break
x0=xi
return int(x0)
The formula of Newton's iteration needs to understand its principle,You can refer to this article for a very detailed explanation(写的很详细):
边栏推荐
猜你喜欢

小马智行起诉擎天智卡:索赔6000万 彭军称要斗争到底

Detailed AST abstract syntax tree

数学之美 第六章——信息的度量和作用

【leetcode】剑指 Offer II 009. 乘积小于 K 的子数组(滑动窗口、双指针)

盘点在线帮助中心对企业能够起到的作用

涨薪5K必学高并发核心编程,限流原理与实战,分布式计数器限流

宁德时代2号人物黄世霖辞任副董事长:身价1370亿

JMeter笔记5 |Badboy使用和录制

【HiFlow】经常忘记签到怎么办?使用腾讯云场景连接器每天提醒你。

Internet Download Manager简介及下载安装包,IDM序列号注册问题解决方法
随机推荐
盘点在线帮助中心对企业能够起到的作用
Go语言类型与接口的关系
leetcode 326. 3 的幂
嵌入式分享合集27
染料修饰核酸RNA|[email protected] 610/[email protected] 594/Alexa 56
C中的数据存储
简易电子琴设计(c语言)
信使mRNA甲基化偶联3-甲基胞嘧啶(m3C)|mRNA-m3C
剑指 Offer II 044. 二叉树每层的最大值-dfs法
ES6--剩余参数
Golang死信队列的使用
开源教育论坛| ChinaOSC
Auto.js实现朋友圈自动点赞
149. The largest number on a straight line, and check the set
leetcode 231. 2 的幂
那些年我写过的语言
【飞控开发高级教程6】疯壳·开源编队无人机-AI语音控制
RNA核糖核酸修饰RNA-HiLyte FluorTM 405荧光染料|RNA-HiLyte FluorTM 405
leetcode 剑指 Offer 58 - II. 左旋转字符串
【leetcode】剑指 Offer II 008. 和大于等于 target 的最短子数组(滑动窗口,双指针)