zoukankan      html  css  js  c++  java
  • 2019年3月31日 LeetCode——69 Java之 x 的平方根

    题目要求:

    实现 int sqrt(int x) 函数。

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

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

    示例 1:

    输入: 4
    输出: 2
    

    示例 2:

    输入: 8
    输出: 2
    说明: 8 的平方根是 2.82842..., 
         由于返回类型是整数,小数部分将被舍去。
    思路:
    题目要求实现x的平方根,最后结果只保留整数部分。很容易的想到用二分法。
    代码示例:
    class Solution {
        public int mySqrt(int x) {
           int high=x;
           int low=0;
           while(low<=high){
                long mid=(high+low)/2;
                if(mid*mid>x){
                    high=(int)mid-1;
                }
                if(mid*mid<x){
                    low=(int)mid+1;
                }
                if(mid*mid==x){
                   return (int)mid;
                }
            }      
                return high;
        }
    }

    注意:low和high都是int型,mid是long,所以在赋值转换的时候,long转int要使用强制转换,eg: high=(int)mid-1;另外二分法在确定位置时,即把mid指针所指的值转换为

    high时,要减1,转换为low时,要加1.否则的话最后结果会变成死循环,程序无法走出判断条件,进而运行时间超时。

    第二种思路:暴力法

    class Solution {
        public int mySqrt(int x) {
            if(x>=2147483647) return 46340;
            int result=0;
            for(int i=0;i<46341;i++){
                if(i*i==x){
                    result=i;                
                }
                if(i*i<x && (i+1)*(i+1)>x){
                    result=i;
                }
            }
            return result;
        }
    }
     
  • 相关阅读:
    log4j到log4j2升级迁移方案
    WPF InkCanvas 书写毛笔效果
    我是怎么把一个项目带崩的
    Nginx 安装详细(一)
    设计方法小总结
    Node.js event loop 和 JS 浏览器环境下的事件循环的区别
    JavaScript this指向问题
    域名解析问题
    浏览器缓存
    Go项目部署到服务器
  • 原文地址:https://www.cnblogs.com/xiayanjiao/p/10630748.html
Copyright © 2011-2022 走看看