LeetCode: 217. 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.
自己的答案,6ms:
public class Solution {
public boolean containsDuplicate(int[] nums) {
if (nums == null || nums.length <= 1) {
return false;
}
int length = nums.length;
int max = nums[0], min = nums[0];
for (int i = 1; i < length; i++) {
if (max < nums[i]) {
max = nums[i];
}
if (min > nums[i]) {
min = nums[i];
}
}
int[] arrays = new int[max - min + 1];
for (int i = 0; i < length; i++) {
arrays[nums[i] - min]++;
if (arrays[nums[i] - min] > 1) {
return true;
}
}
return false;
}
}
最快的答案,3ms:
public class Solution {
public boolean containsDuplicate(int[] nums) {
if(nums == null || nums.length == 1) return false;
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for(int num : nums){
if(num > max)
max = num;
if(num < min)
min = num;
}
boolean[] bool = new boolean[max - min + 1];
for(int num : nums){
if(bool[num - min])
return true;
else
bool[num - min] = true;
}
return false;
}
}