LeetCode 0367.有效的完全平方数【Go】

简介: LeetCode 0367.有效的完全平方数【Go】

有效的完全平方数

LeetCode367. 有效的完全平方数

题目描述

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

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

示例 1:

输入:num = 16
输出:true

示例 2:

输入:num = 14
输出:false

思路

题目要求

  • 给定一个数,判断其是否为完全平方数
  • 结果返回truefalse

等同于寻找算术平方根,若找到则返回true,若未找到则返回false寻找算术平方根可以用二分法。

注意

由于完全平方数的定义:能表示成某个整数的平方的形式。

所以判断条件不能写mid == num/mid,只能写mid * mid == num,因为num/midint类型,会导致结果错误。

例如:当num=5, mid=2时,mid == num/midtrue,而num并不是完全平方数。而mid * mid == numfalse,结果正确。

代码

Go

func isPerfectSquare(num int) bool {
  if num <= 1 {
    return true
  }
  left, right := 1, num/2
  for left <= right {
        mid := left + ((right-left)>>1)
    if mid*mid == num {
      return true
    } else if mid*mid < num {
      left = mid + 1
    } else {
      right = mid - 1
    }
  }
  return false
}

Link

GitHub

目录
相关文章
|
7月前
|
Go
golang力扣leetcode 279.完全平方数
golang力扣leetcode 279.完全平方数
50 0
|
7月前
|
Java C++ Python
leetcode-977:有序数组的平方
leetcode-977:有序数组的平方
51 0
|
4月前
|
Python
【Leetcode刷题Python】977. 有序数组的平方
解决LeetCode "有序数组的平方" 问题的方法:使用Python内置的快速排序、直接插入排序(但会超时)和双指针技术,并给出了每种方法的Python实现代码。
27 1
【Leetcode刷题Python】977. 有序数组的平方
【超直白】leetcode 279 完全平方数
【超直白】leetcode 279 完全平方数
|
6月前
|
算法
【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值
【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值
|
6月前
|
SQL 算法 数据挖掘
LeetCode 第四题:寻找两个正序数组的中位数 【4/1000 】【python + go】
LeetCode 第四题:寻找两个正序数组的中位数 【4/1000 】【python + go】
|
6月前
|
算法 Java Go
【经典算法】LeetCode 392 判断子序列(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 392 判断子序列(Java/C/Python3/Go实现含注释说明,Easy)
74 0
|
6月前
|
存储 算法 Java
【经典算法】LeetCode112. 路径总和(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode112. 路径总和(Java/C/Python3/Go实现含注释说明,Easy)
39 0
|
6月前
|
算法 Java Go
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
54 0
|
6月前
|
算法 Java Go
【经典算法】LeetCode 58.最后一个单词的长度(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 58.最后一个单词的长度(Java/C/Python3/Go实现含注释说明,Easy)
41 0