LeetCode 题解 Swift 有效的完全平方数

 更新时间:2022年09月22日 14:54:12   作者:晨曦_iOS  
这篇文章主要为大家介绍了LeetCode 题解 Swift 有效的完全平方数方案示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目

给定一个 正整数 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(log⁡n),其中 n为正整数 num 的最大值。
  • 空间复杂度:O(1)。

以上就是LeetCode 题解 Swift 有效的完全平方数的详细内容,更多关于Swift 有效完全平方数的资料请关注脚本之家其它相关文章!

相关文章

  • 解析Swift语言面相对象编程中的继承特性

    解析Swift语言面相对象编程中的继承特性

    这篇文章主要介绍了解析Swift语言面相对象编程中的继承特性,是Swift入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • Swift4.1转场动画实现侧滑抽屉效果

    Swift4.1转场动画实现侧滑抽屉效果

    这篇文章主要为大家详细介绍了Swift4.1转场动画实现侧滑抽屉效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • 利用Swift实现各类的CATransition动画详解

    利用Swift实现各类的CATransition动画详解

    CATransition动画主要在过渡时使用,比如两个页面层级改变的时候添加一个转场效果。CATransition分为两类,一类是公开的动画效果,一类是非公开的动画效果。这篇文章主要给大家介绍了关于如何利用Swift实现各类CATransition动画的相关资料,需要的朋友可以参考下。
    2017-09-09
  • Swift中排序算法的简单取舍详解

    Swift中排序算法的简单取舍详解

    对于排序算法, 通常简单的, 为大家所熟知的有, 选择排序, 冒泡排序, 快速排序, 当然还有哈希, 桶排序之类的, 本文仅比较最为常见的选择, 冒泡和快排,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2018-03-03
  • Swift中循环语句中的转移语句 break 和 continue

    Swift中循环语句中的转移语句 break 和 continue

    这篇文章主要介绍了Swift中循环语句中的转移语句 break 和 continue,本文通过实例代码给大家介绍的非常详细,需要的的朋友参考下
    2016-12-12
  • Swift实现文件压缩和解压示例代码

    Swift实现文件压缩和解压示例代码

    本篇文章主要介绍了Swift实现文件压缩和解压示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • SwiftUI List在MacOS中的性能优化示例

    SwiftUI List在MacOS中的性能优化示例

    这篇文章主要为大家介绍了SwiftUI List在MacOS中的性能优化示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 浅析Swift中struct与class的区别(汇编角度底层分析)

    浅析Swift中struct与class的区别(汇编角度底层分析)

    这篇文章主要介绍了Swift中struct与class的区别 ,本文从汇编角度分析struct与class的区别,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Swift使用Cocoa中的数据类型教程

    Swift使用Cocoa中的数据类型教程

    这篇文章主要介绍了Swift使用Cocoa中的数据类型教程,Swift 会自动将一些 Objective-C 类型转换为 Swift 类型,以及将 Swift 类型转换为 Objective-C 类型,需要的朋友可以参考下
    2014-07-07
  • Swift心得笔记之字符串

    Swift心得笔记之字符串

    Swift 的 String 类型是值类型 。 如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作或在函数/方法中传递时,会进行值拷贝。 任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作。
    2015-04-04

最新评论