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;
        }
    }
     
  • 相关阅读:
    Office Web Apps Server 2013与PDF(一)
    关于EF Unit of Work Repository的简单用法
    从3层开始
    使用ms owin 搭建oauth2 server
    让自己的程序支持livewriter
    angularjs 从外部改变controller内的数据
    vs2013 update 2 cordova(phonegap) 环境
    asp.net web api 跨域,带cookie
    c#与IronPython Clojure-clr的调用
    Mvc Moq HttpContext
  • 原文地址:https://www.cnblogs.com/xiayanjiao/p/10630748.html
Copyright © 2011-2022 走看看