# 有效的完全平方数

# 一、题目

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

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

示例 1:

输入:16
输出:True

示例 2:

输入:14
输出:False

# 题解

这道题是典型的模版I分析思路

  1. 在有序的“数组”中,查找指定的元素
  2. 每次排除一般的查找空间
/**
 * @param {number} num
 * @return {boolean}
 */
var isPerfectSquare = function(num) {
    if (num === 1) return true;
    let left = 0;
    let right = num >> 1;
    while (left <= right) {
        const mid = left + ((right - left) >> 1);
        const pro = mid * mid;
        if (pro === num) return true;
        if (pro > num) right = mid - 1;
        if (pro < num) left = mid + 1;
    }
    return false;
};

# 三、写在最后

本文是附加题,可能仅仅借助了二分思想中的一部分,加油!

如果对你有所帮助不妨给本项目的github 点个 star (opens new window),这是对我最大的鼓励

关于我

  • 花名:余光
  • WX:j565017805
  • 沉迷 JS,水平有限,虚心学习中

其他沉淀

Last Updated: 8/6/2021, 6:58:15 PM