LeetCode 367 Valid Perfect Square

題目:

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
題目鏈接

題意:

給一個正整數,要求實現判斷它是否爲一個數的平方。不可以使用庫函數中的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;
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章