367. Valid Perfect Square

来源:互联网 发布:mongodb java条件查询 编辑:程序博客网 时间:2024/05/06 19:36

1.Question

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
2.Code

class Solution {public:    bool isPerfectSquare(int num) {        int left = 1, right = num;        while(left <= right)        {            long mid = left + 0.5*(right - left);  //注意sq需要long型,则mid也需要long型            long sq = mid * mid;            if(sq == num) return true;            else if(sq > num) right = mid - 1;            else left = mid + 1;        }        return false;    }};

3.Note

a. 采用二分查找可以快速定位,二分查找分为几种情况。一种是只查找精确的某个值,可以使用 left<=right; right = mid-1; left = mid+1; 这种形式;一种是查找最大的最小值,可以使用 left<right; right = mid; left = mid+1; 这种形式。还有一些其他情况,具体情况具体分析。 

b. 注意越界的问题,比如,sq需要保存long 型,则mid 也需要long 型。

0 0
原创粉丝点击