首页 > 其他 > 详细

letecode [367] - Valid Perfect Square

时间:2019-06-19 14:18:38      阅读:82      评论:0      收藏:0      [点我收藏+]

Given a positive integer num, write a function which returns True if num is a perfect square else False.

Note: Do not use any built-in library function such as sqrt.

Example 1:

Input: 16
Output: true

Example 2:

Input: 14
Output: false

题目大意

  给定一个正整数,判断其是否为某个数的完全平方数。

理  解:

  用二分法。左初始化值为1,右初始值为num。将中间值的平方mid*mid与num比较:

    若 num/mid > mid,说明mid需要更大,更新left = mid +1;

    若 num/mid < mid,说明mid需要更小,更新right = mid -1;

    若  num/mid = mid,则判断num%mid是否为0,是则说明num为mid的完全平方数,否则不是。

代 码 C++:

class Solution {
public:
    bool isPerfectSquare(int num) {
        int left=1,right=num,mid;
        while(left<=right){
            mid = (right-left)/2 + left;
            if(num/mid > mid){
                left = mid + 1;
            }else if(num/mid < mid){
                right = mid - 1;
            }else{
                if(num%mid == 0)
                    return true;
                else
                    return false;
            }
        }
        return false;
    }
};

运行结果:

  执行用时 :0 ms, 在所有 C++ 提交中击败了100.00%的用户

  内存消耗 :8.2 MB, 在所有 C++ 提交中击败了5.35%的用户

letecode [367] - Valid Perfect Square

原文:https://www.cnblogs.com/lpomeloz/p/11050776.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!