【数学】C020_x的平方根(暴力枚举 | 二分查找 | 牛顿迭代)
一、题目描述 实现 int sqrt ( int x ) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 输入 : 8 输出 : 2 说明 : 8 的平方根是 2.82842 . . . ,由于返回类型是整数,小数部分将被舍去。 二、题解 (1) 枚举 /** * 枚举: * 执行用时 32ms 击败了 5.8% 的java用户 * 内存消耗 MB 击败了 % 的java用户 * @param x * @return */ public int mySqrt1 ( int x ) { if ( x < 1 ) return 0 ; // 任何一个数的平方根都小于等于它的二分之一加一 for ( long i = 0 ; i <= ( x >>> 1 ) + 1 ; i ++ ) { if ( i * i <= x && ( i + 1 ) * ( i + 1 ) > x ) return ( int ) i ; } return - 1 ; } 复杂度分析 时间复杂度: 空间复杂度: (2) 二分查找 /** * 二分查找: * * 执行用时 ms 击败了 % 的java用户 * 内存消耗 MB 击败了 % 的java用户 * @param x * @return */ public int mySqrt (