【leetcode】69. Sqrt(x)(Python & C++)
来源:互联网 发布:键盘 编程 编辑:程序博客网 时间:2024/06/06 20:41
69. Sqrt(x)
[题目链接]https://leetcode.com/problems/sqrtx/description/)
69.1 题目描述:
Implement int sqrt(int x).
Compute and return the square root of x.
69.2 解题思路:
思路一:直接从1到x/2之间遍历,判断是否是平方根的条件是,i*i小于等于x并且(i+1)*(i+1)小于x,则返回i。超时。
思路二:二分查找法。初始化i=0,j=x,mid=0。进入循环,找到中间值mid = (i + j) / 2,如果mid>x / mid,表示mid不是平方根,且数值过大,则j=mid。如果mid小于等于x / mid,则判断(mid + 1) > x / (mid + 1),表示mid*mid小于x,并且mid再加1后的平方就会比x大,这表示mid就是那个平方根,返回mid。否则表示mid过小,i=mid。
思路三:牛顿迭代公式。参见这里。暂时没时间看。
69.3 C++代码:
1、思路一代码(超时):
class Solution127 {public: int mySqrt(int x) {//超时 if (x == 0 || x==1) return x; for (int i = 1; i <= x / 2;i++) { if (i*i == x) return i; if (i*i < x && (i + 1)*(i + 1)>x) return i; } }};class Solution127_1 {public: int mySqrt(int x) {//超时 if (x == 0 || x == 1) return x; int i = 0; int j = x; int mid; while (i<=j) { mid = (i + j) / 2; if (mid*mid > x) j = mid; else { if ((mid + 1)*(mid + 1)>x) return mid; i = mid; } } }};
2、思路二代码(6ms)
class Solution127_2 {public: int mySqrt(int x) { if (x == 0 || x == 1) return x; int i = 0; int j = x; int mid; while (1) { mid = (i + j) / 2; if (mid>x / mid) j = mid; else { if ((mid + 1) > x / (mid + 1)) return mid; i = mid; } } }};
3、思路三代码(6ms)
class Solution127_3 {public: int mySqrt(int x) { long r = x; while (r*r>x) { r = (r + x / r) / 2; } return r; }};
69.4 Python代码:
2、思路二代码(78ms)
class Solution(object): def mySqrt(self, x): """ :type x: int :rtype: int """ if x==0 or x==1: return x i=0 j=x mid=0 while True: mid=(i+j)/2 if mid>x/mid: j=mid else: if (mid+1)>x/(mid+1): return mid i=mid
3、思路三代码(45ms)
class Solution1(object): def mySqrt(self, x): """ :type x: int :rtype: int """ r=x while r*r>x: r=(r+x/r)/2 return r
阅读全文
0 0
- 【leetcode】69. Sqrt(x)(Python & C++)
- [leetcode:python]69.Sqrt(x)
- 【Leetcode】【python】Sqrt(x)
- LeetCode--Sqrt(x)Python
- [Leetcode]69. Sqrt(x)解析@Python
- LeetCode 69. Sqrt(x)
- LeetCode 69.Sqrt(x)
- LeetCode --- 69. Sqrt(x)
- [Leetcode] 69. Sqrt(x)
- [leetcode] 69.Sqrt(x)
- Leetcode-69.Sqrt(x)
- leetcode--69.sqrt(x)
- LeetCode 69. Sqrt(x)
- leetcode 69. Sqrt(x)
- 【LeetCode】69. Sqrt(x)
- 69. Sqrt(x) LeetCode
- [leetcode] 69. Sqrt(x)
- leetcode 69. Sqrt(x)
- 位运算应用
- 神经网络与深度学习学习笔记:正向传播与反向传播(未完)
- Java实现——判断数组出栈顺序
- HDU 2680 Choose the best route
- Mysql学习之路01-基本操作
- 【leetcode】69. Sqrt(x)(Python & C++)
- 信安四级题库
- spring boot打可执行jar包
- Java练习
- Ubuntu14不能改分辨率的问题
- 单链表经典小题(上)
- Python之函数-参数
- Spark编程指南分享
- springmvc学习3 ContextLoaderListener 初始化webApplicationContext