LeetCode 题解 Swift 有效的完全平方数
短信预约 -IT技能 免费直播动态提醒
题目
给定一个 正整数 num
,编写一个函数,如果 num
是一个完全平方数,则返回 true
,否则返回 false
。
进阶:不要 使用任何内置的库函数,如 sqrt
。
示例 1:
输入: num = 16
输出: true
示例 2:
输入: num = 14
输出: false
方法一:使用内置的库函数
思路及解法
根据完全平方数的性质,我们只需要直接判断 num\textit{num}num 的平方根 xxx 是否为整数即可。对于不能判断浮点数的值是否等于整数的语言,则可以通过以下规则判断:
class Solution {
func isPerfectSquare(_ num: Int) -> Bool {
let x: Int = Int(sqrt(Double(num)))
return x * x == num
}
}
复杂度分析
代码中使用的 pow 函数的时空复杂度与 CPU
支持的指令集相关,这里不深入分析。
方法二:暴力
思路及解法
代码
class Solution {
func isPerfectSquare(_ num: Int) -> Bool {
var x: Int = 1
var square: Int = 1
while square <= num {
if square == num {
return true
}
x += 1
square = x * x
}
return false
}
}
复杂度分析
方法三:二分查找
思路及解法
细节
代码
class Solution {
func isPerfectSquare(_ num: Int) -> Bool {
var left: Int = 0
var right: Int = num
while left <= right {
let mid = (right - left) / 2 + left
let square = mid * mid
if square < num {
left = mid + 1
} else if square > num {
right = mid - 1
} else {
return true
}
}
return false
}
}
复杂度分析
- 时间复杂度:O(logn),其中 n为正整数 num 的最大值。
- 空间复杂度:O(1)。
以上就是LeetCode 题解 Swift 有效的完全平方数的详细内容,更多关于Swift 有效完全平方数的资料请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341