存在重復(fù)
給定一個(gè)整數(shù)數(shù)組蕾久,判斷是否存在重復(fù)元素势似。
如果任何值在數(shù)組中出現(xiàn)至少兩次,函數(shù)應(yīng)該返回 true僧著。如果每個(gè)元素都不相同履因,則返回 false。
這個(gè)算是比較容易的盹愚。(判斷的方法依據(jù)就是:我不用百度會(huì)做??)
-1)使用Set
代碼如下:
class Solution {
func containsDuplicate(_ nums: [Int]) -> Bool {
let set = Set(nums)
return set.count != nums.count
}
}
執(zhí)行時(shí)間:52ms
-2) 排序判斷前后有沒有相等的元素(時(shí)間多少取決于排序算法栅迄,我這直接用的Swift提供的sorted
)
代碼如下:
class Solution {
func containsDuplicate(_ nums: [Int]) -> Bool {
if nums.isEmpty || nums.count == 1 {
return false
}
let nums = nums.sorted()
for i in 0..<nums.count - 1 {
if nums[i] == nums[i + 1] {
return true
}
}
return false
}
}
執(zhí)行用時(shí):96 ms
-3)使用哈希表(Dictionary)
代碼如下:
class Solution {
func containsDuplicate(_ nums: [Int]) -> Bool {
for i in 0..<nums.count {
if let _ = dic[nums[i]] {
return true
}
dic[nums[i]] = i
}
return false
}
}
執(zhí)行用時(shí):68 ms