LeetCode 69 _ Sqrt(x) 求平方根 (Easy)

Description:

Implement int sqrt(int x).

Compute and return the square root of x, where x is guaranteed to be a non-negative integer.

Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned.

Example 1:

Input: 4
Output: 2

Example 2:

Input: 8
Output: 2
Explanation: The square root of 8 is 2.82842..., and since
             the decimal part is truncated, 2 is returned.

Solution:

Code:

public int mySqrt(int x) {
    int left = 0, right = x;
    if (x <= 1){
    	return x;
    }
    while (left < right){
    	int mid = left + (right - left)/2;
    	// mid写左半以免越界!
    	if (x / mid >= mid){ // 如果x大于mid^2,证明mid太小,要取右半
    		left = mid + 1; // 如果x刚好等于^2,也将其+1,便于之后取-1的结果
    	}else{
    		right = mid;     // 如果x小于mid^2,证明mid太大,要取左半
    	}
    }
    return right-1;
}

  

提交情况:

Runtime: 1 ms, faster than 100.00% of Java online submissions for Sqrt(x).
Memory Usage: 32.3 MB, less than 100.00% of Java online submissions for Sqrt(x).

原文地址:https://www.cnblogs.com/zingg7/p/10679062.html

时间: 2024-10-09 11:34:22

LeetCode 69 _ Sqrt(x) 求平方根 (Easy)的相关文章

leetcode || 69、Sqrt(x)

problem: Implement int sqrt(int x). Compute and return the square root of x. Hide Tags Math Binary Search 题意:计算平方根,没有指定精度,默认精度为0.00001 thinking: (1)由于题中没有设置精度,提示使用二分法 (2)除了二分法,还可以使用牛顿迭代 code: 二分法: class Solution{ public: int sqrt(int x) { unsigned lo

2019年3月31日 LeetCode——69 Java之 x 的平方根

题目要求: 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842...,   由于返回类型是整数,小数部分将被舍去.思路:题目要求实现x的平方根,最后结果只保留整数部分.很容易的想到用二分法.代码示例: class Solution { public int mySqrt(int x

LeetCode OJ:Sqrt(x)(平方根)

Implement int sqrt(int x). Compute and return the square root of x. 简单的二分法,注意mid应该选为long,否则容易溢出: 1 class Solution { 2 public: 3 int mySqrt(int x) { 4 if(x == 0 || x == 1) return x; 5 int beg = 1; 6 int end = x; 7 long mid = 0; //这里用long,否则会溢出 8 while

【LeetCode 69】Sqrt(x)

Implement int sqrt(int x). Compute and return the square root of x. 思路: 突然发现,二分真TM的是万能的.还有牛顿迭代法,数学的东西,头疼不想看了.还有传说中的“魔数”法,比math库效率都高,试了下RE - -. C++: 1 class Solution { 2 public: 3 int mySqrt(int x) { 4 5 if(x < 0) 6 return 0; 7 if(x == 0 || x == 1) 8

习题2-5 求平方根序列前N项和 (15分)

本题要求编写程序,计算平方根序列?的前N项之和.可包含头文件math.h,并调用sqrt函数求平方根. 输入格式: 输入在一行中给出一个正整数N. 输出格式: 在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后两位.题目保证计算结果不超过双精度范围. 输入样例: 10 输出样例: sum = 22.47 #include<stdio.h> #include<math.h> int main(void){ int n,i; double Sum; scanf(&qu

Leetcode 69. Sqrt(x) 解题报告【C库函数sqrt(x)模拟-求平方根】

69. Sqrt(x) Total Accepted: 93296 Total Submissions: 368340 Difficulty: Medium 提交网址: https://leetcode.com/problems/sqrtx/ Implement int sqrt(int x). Compute and return the square root of x. 分析: 解法1:牛顿迭代法(牛顿切线法) Newton's Method(牛顿切线法)是由艾萨克·牛顿在<流数法>(M

Leetcode 69. Sqrt(x)及其扩展(有/无精度、二分法、牛顿法)详解

Leetcode 69. Sqrt(x) Easy https://leetcode.com/problems/sqrtx/ Implement int sqrt(int x). Compute and return the square root of x, where x is guaranteed to be a non-negative integer. Since the return type is an integer, the decimal digits are truncat

LeetCode --- 69. Sqrt(x)

题目链接:Sqrt(x) Implement int sqrt(int x). Compute and return the square root of x. 这道题的要求是实现int sqrt(int x),即计算x的平方根. 考虑二分,即先令l和r分别为1和x/2+1(x的平方根一定小于等于x/2+1),然后m等于(l+r)/2,不断比较m*m和x的大小. 由于m*m的时候,可能溢出,因此可以用除法代替乘法,或者采用long long类型. 时间复杂度:O(logn) 空间复杂度:O(1)

不使用库函数sqrt实现求一个数的平方根

二分法: double mysqrt(double a) { if(a == 0 ) return 0; double precision = 1.0e-7, start = 0, end = a; if(a < 1) end = 1; while(end - start > precision) { double mid = (start + end) / 2; if( mid == a / mid) return mid; else if(mid > a/mid) end = mid