难度
简单
题目
给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
示例
输入:nums = [1,2,3,1]
输出:true
M1:利用集合
思路
:Set()内无重复元素。将列表转化为集合,再判断两者长度是否相等
class Solution(object):
def containsDuplicate(self, nums):
return len(set(nums)) != len(nums)
object Solution {
def containsDuplicate(nums: Array[Int]): Boolean = {
nums.length > nums.toSet.size
}
}
object Solution {
def containsDuplicate(nums: Array[Int]): Boolean = {
import scala.collection.mutable.Set
var set: Set[Int] = Set[Int]()
for(arr<- nums){
if(!set.add(arr)) return true
}
return false
}
}
M2:利用哈希表
思路:
通过键值对解决重复问题。将数组中元素看做键,将其出现的次数作为值
如果值大于2,则表明该数组具备重复元素
class Solution(object):
def containsDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
Hashtable = dict()
for i,num in enumerate(nums):
if num not in Hashtable:
Hashtable[num] = i
else:
return True
return False
M3:利用排序
思路:
对数组排序,遍历排序后的数组,比较前后两个数是否相等
class Solution(object):
def containsDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
nums.sort()
pre = nums[0]
for i in range(1,len(nums)):
if pre == nums[i]:
return True
else:
pre = nums[i]
return False
M4:利用计数器类
思路:
利用计数器类对列表内元素计数。将元素出现的次数进行排序,取最高值与出现次数为1进行比较,大于1次则表明该列表内具有重复数字。
补充:
Counter(计数器):用于追踪值的出现次数
Counter类继承dict类,可使用dict类里面的方法