P207 数组中是否包含重复元素
算法 21 阅读
信号摘要
难度:Easy · 时长:06:15 · leetcode 217 · lintcode 1320
未对外公开播放权限
点击查看说明
描述
这个题目说的是,给你一个整数数组,你要判断数组中是否包含重复元素。如果数组中包含重复元素就返回 true,否则返回 false。
比如说,给你的数组是:1, 2, 4, 2
这个数组中有两个 2,包含重复元素,返回 true。
再比如说,给你的数组是:
4, 1, 2
在这个数组中,每个数字都只出现了一次,不存在重复元素,因此返回 false。
代码
public class AlgoCasts {
// Time: O(n^2), Space: O(1)
public boolean containsDuplicateBruteForce(int[] nums) {
if (nums == null || nums.length == 0) return false;
for (int i = 0; i < nums.length; ++i)
for (int j = i+1; j < nums.length; ++j)
if (nums[i] == nums[j])
return true;
return false;
}
// Time: O(n*log(n)), Space: O(1)
public boolean containsDuplicateSort(int[] nums) {
if (nums == null || nums.length == 0) return false;
Arrays.sort(nums);
for (int i = 1; i < nums.length; ++i)
if (nums[i] == nums[i-1])
return true;
return false;
}
// Time: O(n), Space: O(n)
public boolean containsDuplicateHashSet(int[] nums) {
if (nums == null || nums.length == 0) return false;
Set<Integer> set = new HashSet<>();
for (int num: nums) {
if (set.contains(num)) return true;
set.add(num);
}
return false;
}
}