0069-leetcode算法实现之x的算术平方根-sqrtx-python&golang实现
2021/10/14 11:14:10
本文主要是介绍0069-leetcode算法实现之x的算术平方根-sqrtx-python&golang实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
示例 1:
输入:x = 4
输出:2
示例 2:
输入:x = 8
输出:2
解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
提示:
0 <= x <= 231 - 1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sqrtx
python
# x的算术平方根 class Solution: # 二分法 def sqrtx(self, x: int) -> int: if x < 0: return -1 left, right, ans = 0, x, x while left <= right: mid = left + ((right-left)>>1) if mid*mid > x: right = mid - 1 else: ans = mid left = mid + 1 return ans # 牛顿-拉夫逊迭代 def sqrtx_newton(self, x: int) -> int: if x < 0: return -1 elif x == 0: return 0 C, x0 = float(x), float(x) while True: xi = 0.5 * (x0 + C/x0) if abs(x0-xi) < 1e-7: break x0 = xi return int(x0) if __name__ == "__main__": x = 256 test = Solution() print(test.sqrtx(x)) print(test.sqrtx_newton(x))
golang
package main import ( "fmt" "math" ) func main() { var x int = 656 fmt.Println(sqrtx(x)) fmt.Println(sqrtxNewton(x)) } func sqrtx(x int) int { if x < 0 { return -1 } var left int = 0 var right int = x var ans int = -1 for left <= right { var mid int = left + ((right - left) >> 1) if mid*mid > x { right = mid - 1 } else { ans = mid left = mid + 1 } } return ans } func sqrtxNewton(x int) int { if x < 0 { return -1 } else if x == 0 { return 0 } C := float64(x) x0 := float64(x) for { xi := 0.5 * (x0 + C/x0) if math.Abs(x0 - xi) < 1e-7 { break } x0 = xi } return int(x0) }
这篇关于0069-leetcode算法实现之x的算术平方根-sqrtx-python&golang实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南