217. Contains Duplicate (Easy)
https://leetcode.com/problems/contains-duplicate/
Given an array of integers, find if the array contains any duplicates.
Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.
Example 1:
Input: [1,2,3,1] Output: true
Example 2:
Input: [1,2,3,4] Output: false
Example 3:
Input: [1,1,1,3,3,4,3,2,4,2] Output: true
Solutions
1.
class Solution {
// The easiest method is to use Set which does not allow duplicate elements.
public boolean containsDuplicate(int[] nums) {
if (nums == null || nums.length == 0) {
return false;
}
Set<Integer> set = new HashSet<>();
for (int i : nums) {
if (!set.add(i)) {
return true;
}
}
return false;
}
}
2.
class Solution1 {
// Firstly, sort the elements so that all the elements of same value are adjacent.
public boolean containsDuplicate(int[] nums) {
if (nums == null || nums.length == 0) {
return false;
}
Arrays.sort(nums);
for (
int i = 0;
i < nums.length - 1; ++i) {
if (nums[i] == nums[i + 1]) return true;
}
return false;
}
}
Incorrect Solutions
class Solution {
// Failed solution that exceeds time limit
public boolean containsDuplicate(int[] nums) {
if (nums == null || nums.length == 0) {
return false;
}
// List is less efficient than set
List<Integer> list = new ArrayList<>();
for (int num : nums) {
if (list.contains(num)) {
return true;
}
list.add(num);
}
return false;
}
}