美文网首页算法每日一刷
LeetCode-69. x 的平方根(Swift)

LeetCode-69. x 的平方根(Swift)

作者: entre_los_dos | 来源:发表于2019-07-14 23:23 被阅读0次

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/sqrtx

    题目

    实现 int sqrt(int x) 函数。

    计算并返回 x 的平方根,其中 x 是非负整数。

    由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

    示例 1:

    输入: 4
    输出: 2
    

    示例 2:

    输入: 8
    输出: 2
    说明: 8 的平方根是 2.82842..., 
         由于返回类型是整数,小数部分将被舍去。
    

    先中x一半开始找,然后小了,就往大了找,大了就往小了找。

    方法:二分查找

    func mySqrt(_ x: Int) -> Int {
            var low = 0
            var high = x
            var result = 0
            while (low <= high) {
                let middle = (low + high)/2
                if(middle * middle == x) {
                    return middle
                }
                if(middle * middle < x) {
                    low = middle + 1
                    result = middle
                }
                else if(middle * middle > x) {
                    high = middle - 1
                }
            }
            return result
        }
    

    结果:超时

    方法2-利用swift的squareRoot方法

    func mySqrt(_ x: Int) -> Int {
                    
            return Int(Double(x).squareRoot())
        }
    

    相关文章

      网友评论

        本文标题:LeetCode-69. x 的平方根(Swift)

        本文链接:https://www.haomeiwen.com/subject/htlwkctx.html