LeetCode 367 Valid Perfect Square

来源:互联网 发布:人工蜂群算法工具箱 编辑:程序博客网 时间:2024/06/05 11:58

题目:

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: 16Returns: True

Example 2:

Input: 14Returns: False
题目链接

题意:

给一个正整数,要求实现判断它是否为一个数的平方。不可以使用库函数中的sqrt函数。

利用二分查找算法,每次查找中间值,判断中间值的平方和num之间的关系,实现过程中注意int的越界问题,中间变量应当使用long long类型变量。

代码如下;

class Solution {public:    bool isPerfectSquare(int num) {        int l = 0, r = num;        while (l < r) {            long long mid = (l+r) >> 1;            long long temp = mid * mid;            if (temp > num) {                r = mid - 1;            }            else if (temp < num) {                l = mid + 1;            }            else {                return true;            }        }        return l*l == num;    }};