LeetCode 69 — Sqrt(x)(C++ Java Python)

来源:互联网 发布:泰诺和快克哪个好 知乎 编辑:程序博客网 时间:2024/06/05 18:36

题目:http://oj.leetcode.com/problems/sqrtx/

Implement int sqrt(int x).

Compute and return the square root of x.

题目翻译:

实现int sqrt(int x)。
计算并返回x的平方根。

分析:

        二分查找。注意结果不是整数时应返回整数部分。

C++实现:

class Solution {public:    int sqrt(int x) {        // Note: The Solution object is instantiated only once and is reused by each test case.    if(x < 2)    {    return x;    }    int left = 1;    int right = x / 2;    int mid = 0;    int lastMid = 0;    while(left <= right)    {    mid = (left + right) / 2;    if(x / mid > mid)    {    left = mid + 1;    lastMid = mid;    }    else if(x / mid < mid)    {    right = mid - 1;    }    else    {    return mid;    }    }    return lastMid;    }};

Java实现:

public class Solution {    public int sqrt(int x) {        // Note: The Solution object is instantiated only once and is reused by each test case.if (x < 2) {return x;}int low = 1;int high = x / 2;int mid = 0;int lastMid = 0;while (low <= high) {mid = (low + high) / 2;if (x / mid > mid) { low = mid + 1;lastMid = mid; } else if (x / mid < mid) {high = mid - 1;} else {return mid;}}return lastMid;    }}

Python实现:

class Solution:    # @param x, an integer    # @return an integer    def sqrt(self, x):        if x < 2:            return x                left = 1        right = x / 2                while left <= right:            mid = (left + right) / 2            if(x > mid * mid):                left = mid + 1                lastMid = mid            elif(x < mid * mid):                right = mid - 1            else:                return mid                    return lastMid

        感谢阅读,欢迎评论!

0 0
原创粉丝点击