1.可以利用Java自带的Arrays.sort()方法先对数组进行排序,排序之后只需对相邻两个数字进行判断是否相等就可以知道是否存在重复;或者用set.contains()方法进行判断
2.遍历一次数组,遍历过程中,将每次遍历的数组元素按升序放到它相应的位置,那么这个元素必然>=它之前的元素。然后比较该元素与前一个元素是否相等。如果相等,则说明包含重复的元素。
class Solution {
public boolean containsDuplicate(int[] nums) {
int len=nums.length;
if(len==0) return false;
for(int i=1;i<len;i++){
int j=i-1;
int temp=nums[j+1];
while(j>=0&&nums[j]>temp){
nums[j+1]=nums[j];
j--;
}
nums[j+1]=temp;
if(j>=0&&nums[j]==nums[j+1]){
return true;
}
}
return false;
}
}
3.如果对时间复杂度和空间复杂度没有要求的话,就直接使用二重循环进行遍历,时间复杂度为O(n^2);若果想要降低时间复杂度,可以定义一个大小为n的向量用于记录数组元素出现的次数进行判断,空间复杂度为O(n);