Leetcode 69. x 的平方根

﹏ヽ暗。殇╰゛Y 2022-09-09 06:28 297阅读 0赞

题目重述

实现 int sqrt(int x) 函数。

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

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

示例 1:

输入: 4
输出: 2

示例 2:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sqrtx
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

  • 看到O(logn)级别的复杂度的题,就要考虑二分查找
  • 平方根一定在[ 0,x ]范围内,那么我们只要把这个范围看作是一个数组,我们二分查找就好了,不断缩小范围

Java实现

  1. class Solution {
  2. public int mySqrt(int x) {
  3. long left = 0,right = x;
  4. long result = 0;
  5. while(left <= right){
  6. long mid = (left+right)/2;
  7. long t = mid*mid;
  8. if(t<=x){
  9. result = mid;
  10. left = mid + 1;
  11. }else{
  12. right = mid -1;
  13. }
  14. }
  15. return (int)result;
  16. }
  17. }

发表评论

表情:
评论列表 (有 0 条评论,297人围观)

还没有评论,来说两句吧...

相关阅读

    相关 leetcode69 x平方根

    实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1:

    相关 LeetCode 69x平方根

    题目描述 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。