给你一个整数数组 nums 。如果存在一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
示例 1:
输入:nums = [1,2,3,1]
输出:true
示例 2:
输入:nums = [1,2,3,4]
输出:false
示例 3:
输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true
提示:
- 1 <= nums.length <= 105
- -109 <= nums[i] <= 109
解法一
用一个 set 对象用来保存已经从 nums 中遍历得到的数据,遍历 nums 时判断 set 中是否存在它,是则说明 nums 中存在重复的值,这些返回 true,否则继续遍历,直到nums结束,返回 false
typescript
function containsDuplicate(nums: number[]): boolean {
const numSet = new Set<number>()
let result = false
for(let num of nums) {
if (numSet.has(num)) {
result = true
break
} else {
numSet.add(num)
}
}
return result
};
时间复杂度O(n),空间复杂度O(n)
解法二
先排序,再比较相邻元素是否相等
ini
function containsDuplicate(nums: number[]): boolean {
nums = nums.concat([])
nums.sort((a,b) => a - b)
let result = false
let i = 0
while(i < nums.length) {
if (nums[i] === nums[i + 1]) {
result = true
break
}
i++
}
return result
};