zoukankan      html  css  js  c++  java
  • 判断一个整数是否是平方数

    367. Valid Perfect Square

    题意:不用api,判断一个整数是否是平方数。

    开始的想法是直接用二分法判断是否是平方数。

    错误的代码:

     1 public boolean isPerfectSquare(int num) {
     2         // binary search
     3         int i=0;
     4         int n=num;
     5         while(i<=n){
     6             int mid=i+(n-i)/2;
     7             int square=mid*mid;
     8             if(square==num) return true;
     9             else if(square<num){
    10                 i=mid+1;
    11             }
    12             else {
    13                 n=mid-1;
    14             }
    15         }
    16         return false;
    17     }

    第7行相乘会溢出,并且测试超时(应该就是溢出导致循环未停止)。

    修改为以下代码,测试通过。

     1 public boolean isPerfectSquare(int num) {
     2         // binary search
     3         int i=1;
     4         int n=(num>>1)+1;
     5         while(i<=n){
     6             int mid=i+(n-i)/2;
     7             long square=(long)mid*mid;
     8             if(square==(long)num) return true;
     9             else if(square<(long)num){
    10                 i=mid+1;
    11             }
    12             else {
    13                 n=mid-1;
    14             }
    15         }
    16         return false;
    17     }
  • 相关阅读:
    JAVA基础学习(7)之函数
    人与神话阅读笔记03
    学习进度八
    人月神话阅读笔记02
    NABCD原则
    人月神话阅读笔记01
    学习进度七
    学习进度六
    梦断代码阅读笔记03
    地铁系统初步思路
  • 原文地址:https://www.cnblogs.com/shizhh/p/5694005.html
Copyright © 2011-2022 走看看