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 是否為整數即可。對于不能判斷浮點數的值是否等于整數的語言,則可以通過以下規(guī)則判斷:

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
}
}
復雜度分析

方法三:二分查找
思路及解法

細節(jié)

代碼
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開發(fā)之UITableView狀態(tài)切換效果
這篇文章主要介紹了Swift開發(fā)之UITableView狀態(tài)切換效果的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08

