217. 存在重复元素
给你一个整数数组 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
题目来源:力扣(LeetCode)
哈希表解决思路
能否写出:能写出来
时间:10分钟之内
思路:
用哈希表不能有重复的特性直接完成了
// 仅是我的思路代码,leetcode上大神更厉害 class Solution { public boolean containsDuplicate(int[] nums) { HashSet<Integer> set = new HashSet<>(); for (int num : nums) { if(!set.isEmpty()&&set.contains(num)){ return true; } set.add(num); } return false; } }
时间复杂度:O(n) nums长度
空间复杂度:O(n) nums长度
还有其他的思路解决,这里我就不列举代码了
暴力解决 没什么是循环解决不了的,有就加多一个循环的。(╯°Д°)╯︵ ┻━┻
思路:使用两层循环遍历数组,对每对元素进行比较,判断是否存在重复。时间复杂度为O(n^2)
排序解决
思路:先对数组进行排序,然后遍历数组,判断相邻元素是否相等。如果存在相等元素,则说明存在重复。时间复杂度取决于排序算法的复杂度,通常为O(nlogn),且不需要额外的空间。