一惹谐、題目原型:
給定一個(gè)整數(shù)數(shù)組,判斷是否存在重復(fù)元素驼卖。
如果任何值在數(shù)組中出現(xiàn)至少兩次氨肌,函數(shù)返回 true。如果數(shù)組中每個(gè)元素都不相同酌畜,則返回 false怎囚。
二、題目意思剖析:
示例 1:
輸入: [1,2,3,1]
輸出: true
示例 2:
輸入: [1,2,3,4]
輸出: false
示例 3:
輸入: [1,1,1,3,3,4,3,2,4,2]
輸出: true
三桥胞、解題思路:
1.先排序恳守,然后通過(guò)兩個(gè)指針進(jìn)行遍歷比較,相同就直接返回true贩虾。
耗時(shí)112
毫秒催烘,超過(guò)8%
的提交記錄。
func containsDuplicate(_ nums: [Int]) -> Bool {
var mutNums: [Int] = nums.sorted()
let count = mutNums.count
var i: Int = 0
var j: Int = 1
while i<j && i<count && j<count {
if mutNums[i] == mutNums[j] {
return true
}else {
i = i + 1
j = j + 1
}
}
return false
}
2.直接用set來(lái)判斷缎罢,因?yàn)閟et是無(wú)重復(fù)數(shù)據(jù)的集合伊群。
耗時(shí)60
毫秒,超過(guò)72.22%
的提交記錄策精。
Swift語(yǔ)言 提供Arrays在岂、Sets和Dictionaries三種基本的集合類型用來(lái)存儲(chǔ)集合數(shù)據(jù)。
數(shù)組(Arrays)是有序數(shù)據(jù)的集蛮寂。
集合(Sets)是無(wú)序無(wú)重復(fù)數(shù)據(jù)的集蔽午。
字典(Dictionaries)是無(wú)序的鍵值對(duì)的集。
func containsDuplicate(_ nums: [Int]) -> Bool {
let set = Set(nums)
return set.count < nums.count
}
3.用Set的另一個(gè)方法酬蹋,.inserted及老,如果集合里存在某個(gè)元素,再加該元素時(shí)范抓,.inserted = false骄恶。
耗時(shí)48
毫秒,超過(guò)98.33%
的提交記錄匕垫。
// checkNums :[1] [1,2] [1,2,3] [1,2,3,4]
// 因?yàn)榧侠镉?僧鲁,所以加不進(jìn)去,所以.inserted = false,說(shuō)明有重復(fù)的數(shù)字
func containsDuplicate(_ nums: [Int]) -> Bool {
if nums.count <= 1 { return false}
var checkNums: Set<Int> = [nums.first!]
for i in 1..<nums.count {
if !checkNums.insert(nums[i]).inserted {
return true
}
}
return false
}
四寞秃、小結(jié)
推薦使用2斟叼、3方法,總提交數(shù)18.