3.存在重复元素
访问
本文共457字。
题目描述
给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
示例 1:
输入:nums = [1,2,3,1]
输出:true
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contains-duplicate
方法1、排序
执行用时:88 ms
时间复杂度:O(nlogn)
空间复杂度:O(logn)
思路总结:先排序,遍历每个数,判断相邻的数是否相同。有相同,返回true;无,返回false。
注意:for循环要执行完毕,才能return false。
1 | class Solution(object): |
方法2、集合Set
执行用时:48 ms
时间复杂度:O()
空间复杂度:O()
思路总结:利用set集合的不重复性,将数组转set,如果长度不一致,说明有重复的元素。
1 | class Solution(object): |
也可以遍历数组,逐个存入空集合,如果已存在,表示有重复。32ms
同理,也可以构建一个hash表。
1 | class Solution(object): |
方法3、哈希表
执行用时: ms
时间复杂度:O()
空间复杂度:O()
思路总结:新建一个hash表,遍历数组,if hash表里存在相同的数,return True。
1 | class Solution(object): |