367. Valid Perfect Square

https://leetcode.com/problems/valid-perfect-square/#/solutions

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
Returns: True
Example 2:

Input: 14
Returns: False
Credits:
Special thanks to @elmirap for adding this problem and creating all test cases.

数学问题常考虑是否越界, 用long? 

 

public boolean isPerfectSquare(int num) {
        int beg = 1, end = num / 2 + 1;
        while (beg + 1 < end) {
            int mid = beg + (end - beg) / 2;
            if (num / mid == mid && num % mid == 0) {
                return true;
            } else if (num / mid < mid) {
                end = mid;
            } else {
                beg = mid;
            }
        }
        if (num / beg == beg && num % beg == beg || num / end == end && num % end == 0) {
            return true;
        } else {
            return false;
        }
    }

  

posted @ 2017-06-29 10:25  apanda009  阅读(133)  评论(0编辑  收藏  举报