给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。

    进阶:不要 使用任何内置的库函数,如 sqrt 。

    示例 1:
    输入:num = 16
    输出:true
    示例 2:

    输入:num = 14
    输出:false

    1. /**
    2. * @param {number} num
    3. * @return {boolean}
    4. */
    5. var isPerfectSquare = function (num) {
    6. // let res = Math.floor(Math.sqrt(num));
    7. // return res * res === num
    8. let low = 0, high = num;
    9. while (low <= high) {
    10. const mid = Math.floor((high + low) / 2);
    11. const square = mid * mid;
    12. if (square < num) {
    13. low = mid + 1;
    14. } else if (square > num) {
    15. high = mid - 1;
    16. } else {
    17. return true;
    18. }
    19. }
    20. return false;
    21. };

    image.png