LeetCode 367: isValidSquare 是否是完全平方数 (Java)

发布时间:2019-11-18 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了LeetCode 367: isValidSquare 是否是完全平方数 (Java)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

题目:给一个正整数,判断它是不是完全平方数。


解法:

  1. 二分法。给的是int型的正整数,所以下界是1,上界是最大正整数Integer.MAX_VALUE的平方根。但要注意一定要用乘法来判断相等时的情况。下面是代码:

  public static int mySqrt(int x) {         if(x == 0) return 0;         int left = 1, right = Integer.MAX_VALUE;         while(true){             int mid = left + (right-left)/2;             if(mid > x/mid)                 right=mid-1;             else{                 if(mid+1>x/(mid+1))                     return (int)mid;                 left=mid+1;             }         }     }          public static boolean isPerfectSquare(int num) {         if(num == 0) return true;         int left = 1, right = mySqrt(Integer.MAX_VALUE);         while(right >= left){             int mid = left + (right-left)/2;             if(mid*mid == num)                 return true;             else if(mid*mid > num)                 right = mid - 1;             else                 left = mid + 1;         }         return false;     }  

2.数学技巧:所有的完全平方数都可以被表示成奇数和1+3+5+7+9 ...。

public boolean isPerfectSquare(int num) {      int i = 1;      while (num > 0) {          num -= i;          i += 2;      }      return num == 0;  } 

脚本宝典总结

以上是脚本宝典为你收集整理的LeetCode 367: isValidSquare 是否是完全平方数 (Java)全部内容,希望文章能够帮你解决LeetCode 367: isValidSquare 是否是完全平方数 (Java)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。