LeetCode 题解(167): Sqrt(x)

来源:互联网 发布:c语言中取反 编辑:程序博客网 时间:2024/06/06 03:04

题目:

Implement int sqrt(int x).

Compute and return the square root of x.

题解:

在 [0, x / 2 + 1] 范围内二分查找。

C++版:

class Solution {public:    int mySqrt(int x) {      int i = 0;      int j = x / 2 + 1;      while (i <= j) {          long mid = (i + j) / 2;          long sq = mid * mid;          if (sq == x) return mid;          else if ( sq < x) i = mid + 1;          else j = mid - 1;      }      return j;    }};

Java版:

public class Solution {    public int mySqrt(int x) {        int i = 0, j = x / 2 + 1;        while(i <= j) {            long mid = (i + j) / 2;            long sq = mid * mid;            if(sq == x) return (int)mid;            else if(sq > x) j = (int)(mid) - 1;            else i = (int)mid + 1;        }        return j;    }}

Python版:

class Solution:    # @param {integer} x    # @return {integer}    def mySqrt(self, x):        if x < 0:            return None        if x == 0 or x == 1:            return x        y, z = x / 2 + 1, 0        while z <= y:            mid = (y + z) / 2            if mid * mid == x:                return mid            elif mid * mid > x:                y = mid - 1            else:                z = mid + 1        return y


0 0
原创粉丝点击