zoukankan      html  css  js  c++  java
  • 367. 有效的完全平方数

    给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。

    说明:不要使用任何内置的库函数,如  sqrt

    示例 1:

    输入:16
    输出:True

    示例 2:

    输入:14
    输出:False

    思路: 这考察的是利用二分法来找平方数,注意 (min+max)/2 的平方可能会溢出,所以其平方的值可以用一个long来存储,也可以用下面代码的方法处理。
        考虑到Integer.MAX_VALUE的开方值为46340左右,所以num大于等于46341时,令max=46341,然后二分查找即可,避免溢出。 目前执行时间 0ms,beat 100%
    class Solution {
        public boolean isPerfectSquare(int num) {
            if(num==1) return true;
            int min=0,max=0;
            int sqrt=0;
            if(num>=46341) max = 46341;
            else max=num;
            sqrt = (min+max)/2;
            
            while(sqrt*sqrt!=num ){
                if(min==max-1) return false;
                if(sqrt*sqrt>num) max = sqrt; 
                else  min = sqrt;
                sqrt = (max+min)/2;
            }
            return true;
        }
    }
  • 相关阅读:
    Linux基础命令---swapon
    Linux基础命令---fsck
    Linux基础命令---e2fsck
    Combination Sum
    Pow(x, n)
    Permutations
    Permutation Sequence
    Rotate List
    Unique Paths II
    Unique Paths
  • 原文地址:https://www.cnblogs.com/chen-jack/p/9937632.html
Copyright © 2011-2022 走看看